UIScrollView可以调整为水平缩放而不是垂直缩放吗?(怎么样)

Ale*_*lin 1 iphone objective-c uiscrollview

我正在尝试创建一个时间轴视图,将事件显示为UIButtons,可以按下以获取更多信息.

理想情况下,我想在UIScrollView上布置按钮,并允许它们水平拉伸/收缩,但不能垂直伸展.

我想要完成的事情基本上相当于使用捏合手势来调整内容视图的大小,并使用滚动视图来左右移动 - 你能指出我正确的方向,或者建议你如何能够完成这样的事情?

我的第一个想法是UIScrollView缩放UIView子视图,并让UIView子视图包含另一个不垂直调整大小的子视图,但只在边界更改时水平调整,并禁用垂直滚动.也许我可以跳过其中一个UIView子视图,只有一个人可以做任何事情.感觉就像我试图像HTML页面或所有这些容器的东西一样破解它.

我不确定我是否已经足够好地解释了这一点,希望能得到答案,但是我们对此表示赞赏.

Rol*_*lin 9

我通过创建UIView的子类来实现仅水平缩放,只需覆盖setTransform并在UIScrollView更改比例时将Y缩放设置为1:

@interface DiagramStripView : UIView { }
@end

@implementation DiagramStripView

- (void)setTransform:(CGAffineTransform)newValue;
{
    newValue.d = 1.0;
    [super setTransform:newValue];
}

@end
Run Code Online (Sandbox Code Playgroud)

正如班级名称所示,我的视图包含一系列图表,每个图表都是一个屏幕范围.当用户放开时,视图控制器将视图的比例重置为1并将所有内容重绘为新比例:

- (void) scrollViewDidEndZooming:(UIScrollView *)scrollView 
                        withView:(UIView *)view atScale:(float)scale 
{
    diagramStripView.transform = CGAffineTransformIdentity;
    [self redrawDiagrams:scale];
}
Run Code Online (Sandbox Code Playgroud)