我有一个从笔尖加载的视图控制器,我有一个高度为346像素的滚动视图。但是,当我这样做时:
int h = scrollView.frame.size.height;
NSLog(@"%d",h);
在viewDidLoad中我得到375。
我需要在viewDidLoad(或其他类似的方法)中使用适当的高度,以便我可以根据高度以编程方式设置滚动视图的内容(不要让它垂直'溢出',只是水平,它的分页)
滚动视图已打开每个自动调整行。 (全是鲜红色)。奇怪的是,当视图加载时,我可以看到滚动视图是(正确的)346像素高而不是375,因此它必须在viewDidLoad和显示视图之间的某处更改为正确的值。
我在这里走到了尽头,任何能够获得适当大小视图的方式都会非常有帮助。在此先感谢,如果您需要更多信息,请发表评论。
编辑:我解决它的方法是将一个0.1秒的计时器放入viewDidLoad,当调用该计时器时,我完成了我需要做的工作。这有点像黑客,所以任何其他建议都会非常感激。
答案 0 :(得分:4)
执行其他布局类型计算的正确位置通常位于viewWillLayoutSubviews
或viewDidLayoutSubviews
。 Docs here。同样来自“处理视图旋转”部分:
视图后也会调用
viewWillLayoutSubviews
方法 由其父母调整大小和定位。如果视图控制器不是 当方向发生变化时可见,然后是旋转方法 永远不会被称为。但是,调用viewWillLayoutSubviews
方法 当视图变得可见时。
答案 1 :(得分:0)
看看这个link。
您未将子视图放置在超级视图中并进行布局。例如,在viewDidAppear:
中获取您的视图大小。