2

我有一个 UIScrollView,里面有一个文本字段和一个 UIImageView。我试图让它垂直滚动(支持设备旋转到横向与纵向),但无论我做什么,它都只能水平滚动而不是垂直滚动,我不知道为什么。

我已经阅读了很多关于自动布局和滚动视图的内容,所以我认为这可能是一个自动布局问题。但是,我已经配置了自动布局来处理旋转切换到横向,所以我想保持它打开。子视图通过情节提要添加到滚动视图。

我通常也对滚动视图的 contentSize 感到困惑。这应该比文档中的屏幕尺寸大吗?我还看到了一个 stackoverflow 问题,它应该与让我感到困惑的屏幕大小相同。

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.scrollView setDelegate:self];
    self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height+400);
}

-(void)orientationChanged:(NSNotification *)notification{
    self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height+400);

}
4

1 回答 1

0

scrollView 的滚动方向将由contentSize' 与 scrollView 的框架的关系决定。这contentSize是包含所有滚动视图的子视图的容器的大小(滚动视图实际上是一个窗口的容器)。

首先,将 设置scrollView.frame为您想要的任何内容。

其次,将您的图像(或任何其他内容)添加到滚动视图。确保图像高度 <=scrollView.frame.size.height以确保仅水平滚动。(据我所知,没有 directionLock UIScrollView。) ContentSize 应该自动设置,但您也可以直接设置它,例如:

[scrollView setContentSize:(CGSize){scrollView.size.height, someLargeWidth}];

您不需要在旋转时重新设置 contentSize。您可以设置scrollView.frame显式旋转,或使用 autoresizingMask 或使用 autoLayout。

于 2013-07-29T18:38:10.437 回答