UIScrollView水平滚动而不是垂直滚动?

时间:2013-07-29 18:25:19

标签: ios uiscrollview autolayout

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

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

我也常常对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);

}

1 个答案:

答案 0 :(得分:0)

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

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

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

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

您不需要在轮换时重新设置contentSize。您可以在轮换时明确设置scrollView.frame,也可以使用autoresizingMask或使用autoLayout。