我的UIViews
中有4个UIViewController
颜色:黄色,绿色,灰色和蓝色。
我还给出了以下自动布局限制:
黄色视图:Top-8-superview,Leading-8-superview,Trailing-8-superview,height = 120
绿色视图:Top-8-YellowView,Leading-8-superview,width = 200,height = 100
灰色视图:Top-8-GreenView,Leading-8-superview,Trailing-8-superview,bottom-8-blueView;
BlueView :Bottom-60-superview,trailing-8-superview,width = 260,heigth = 30
编译运行后,看起来像这样:
此时,没有问题,没有约束投诉,一切都很好。
但是,我更改了4 UIView
s'父视图到UIScrollView
,然后UI显示错误:只显示绿色视图,缺少黄色视图和灰色视图,蓝色视图显示一小部分。
在控制台中,我检查了scrollView的contentSize.width为16,这是不正确的,所以我尝试在viewDidLayoutSubviews
中更正它:
self.scrollView.contentSize = self.view.bonds.size;
[self.scrollView setNeedsDisplay];
[self.scrollView layoutIfNeeded];
contentSize变为(414,736),这是正确的,但显示仍然与我的第二个附加图像相同。我列出了视图详细信息:
YellowView :frame:(8,28,0,120)
GreenView :框架:(8,156,200,120)
GreyView :frame:(8,264,0,274)
BlueView :frame:( - 252,646,260,30)
我观察到的是,如果我给出宽度常数,视图的宽度至少大于0,对于黄色和灰色视图,因为它们是没有宽度约束的空白视图,所以它们将有问题显示
除了给出宽度限制之外,修复它的最佳解决方案是什么?我也想知道为什么黄色和灰色的宽度为零,因为我还给出了顶部,前导,尾随,高度限制?
答案 0 :(得分:1)
将contentView
添加为scrollView
的子视图,然后将所有子视图添加为contentView
的子视图。 contentView
的约束设置为width = superview.width
,height >= superview.height
和contentView
到scrollView
的第4个边(前导,顶部,尾部,底部)。更多信息:https://www.natashatherobot.com/ios-autolayout-scrollview/