首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIScrollView contentSize不工作

UIScrollView contentSize不工作
EN

Stack Overflow用户
提问于 2012-10-12 02:39:42
回答 15查看 96.3K关注 0票数 62

我在nib的view中放置了一个UIScrollView,并将其链接到一个IBOutlet属性。

现在,当我在我的viewDidLoad方法中这样做时,它似乎对contentSize没有影响

代码语言:javascript
复制
self.sv.backgroundColor = [UIColor yellowColor]; // this works
CGSize size =  CGSizeMake(1000.0, 1000.0); 
[self.sv setContentSize:size]; // this does not

它的行为就像contentSize与帧一样。到底怎么回事?这是在我关闭AutoLayout后开始工作的。为什么?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2012-10-12 02:44:09

我也有同样的问题。UIScrollView的自动布局被搞乱了。

解决方法:将UIScrollView中的所有内容放入另一个UIView中,并将该UIView作为UIScrollView的唯一子对象。然后,您可以使用自动布局。

如果末尾的东西弄乱了(无论UIScrollView滚动到哪个方向的末尾),请更改末尾的约束,使其具有尽可能低的优先级。

票数 85
EN

Stack Overflow用户

发布于 2014-03-31 19:46:40

我试着用viewWillLayoutSubviews更新scrollView的contentSize,这对我很有效。

代码语言:javascript
复制
- (void)viewDidLayoutSubviews
{
  [self.bgScrollView setContentSize:CGSizeMake(320, self.view.frame.size.height* 1.5)];
}

代码语言:javascript
复制
-(void)viewDidLayoutSubviews

调用以通知视图控制器它的视图刚刚布置了它的子视图。

讨论

当视图控制器的视图的边界改变时,视图调整其子视图的位置,然后系统调用此方法。但是,调用此方法并不表示视图的子视图的各个布局已经调整。每个子视图负责调整自己的布局。

视图控制器可以覆盖此方法,以便在视图布局其子视图后进行更改。此方法的默认实现不执行任何操作。

票数 71
EN

Stack Overflow用户

发布于 2013-03-05 09:01:32

最简单/最干净的方法是将contentSize设置为viewDidAppear,这样就可以消除自动布局的效果。这不涉及添加随机视图。然而,依赖加载顺序来使实现工作可能不是最好的主意。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12846351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档