2013-07-29 143 views
1

我有一个带有textfield和UIImageView的UIScrollView。我试图让它垂直滚动(支持设备旋转到横向与纵向),但不管我做什么,它只是水平滚动而不是垂直滚动,我不知道为什么。UIScrollView水平滚动而不是垂直滚动?

我已经阅读了很多关于autolayout和scrollview的内容,所以我认为这可能是一个自动布局问题。不过,我已经配置了自动布局来处理旋转开关到横向,所以我想继续。子视图通过故事板添加到滚动视图。

我也一般对scrollView的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); 

} 
+0

只是为了调试原因,你能测量scrollview框架吗?只是硬编码self.scrollView.frame = CGRectMake(0,0,320,480),看看你是否得到相同的行为。 – yunas

回答

0

滚动视图的滚动方向将由contentSize的相对于滚动视图的帧来确定。 contentSize是保存所有scrollView子视图(scrollView实际上是一个窗口的容器)的容器的大小。

首先,将scrollView.frame设置为您想要的值。

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

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

你不应该需要重新设置在旋转时contentSize。您可以在旋转时明确设置scrollView.frame,也可以使用autoresizingMask或使用autoLayout。