我在nib的view中放置了一个UIScrollView,并将其链接到一个IBOutlet属性。
现在,当我在我的viewDidLoad方法中这样做时,它似乎对contentSize没有影响
self.sv.backgroundColor = [UIColor yellowColor]; // this works
CGSize size = CGSizeMake(1000.0, 1000.0);
[self.sv setContentSize:size]; // this does not它的行为就像contentSize与帧一样。到底怎么回事?这是在我关闭AutoLayout后开始工作的。为什么?
发布于 2012-10-12 02:44:09
我也有同样的问题。UIScrollView的自动布局被搞乱了。
解决方法:将UIScrollView中的所有内容放入另一个UIView中,并将该UIView作为UIScrollView的唯一子对象。然后,您可以使用自动布局。
如果末尾的东西弄乱了(无论UIScrollView滚动到哪个方向的末尾),请更改末尾的约束,使其具有尽可能低的优先级。
发布于 2014-03-31 19:46:40
我试着用viewWillLayoutSubviews更新scrollView的contentSize,这对我很有效。
- (void)viewDidLayoutSubviews
{
[self.bgScrollView setContentSize:CGSizeMake(320, self.view.frame.size.height* 1.5)];
}-(void)viewDidLayoutSubviews调用以通知视图控制器它的视图刚刚布置了它的子视图。
讨论
当视图控制器的视图的边界改变时,视图调整其子视图的位置,然后系统调用此方法。但是,调用此方法并不表示视图的子视图的各个布局已经调整。每个子视图负责调整自己的布局。
视图控制器可以覆盖此方法,以便在视图布局其子视图后进行更改。此方法的默认实现不执行任何操作。
发布于 2013-03-05 09:01:32
最简单/最干净的方法是将contentSize设置为viewDidAppear,这样就可以消除自动布局的效果。这不涉及添加随机视图。然而,依赖加载顺序来使实现工作可能不是最好的主意。
https://stackoverflow.com/questions/12846351
复制相似问题