【问题标题】:UIScrollView cannot have correct contentSizeUIScrollView 不能有正确的 contentSize
【发布时间】:2017-04-27 14:12:41
【问题描述】:

我的UIViewController 中有 4 个UIViews,颜色分别为:黄色、绿色、灰色和蓝色。
我还给出了以下自动布局约束:
黄色视图:Top-8-superview,Leading-8-superview,Trailing-8-superview,高度 = 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个UIViews的父视图改成UIScrollView,然后UI显示错误:只有绿色视图正确显示,黄色视图和灰色视图缺失,蓝色视图显示一小部分。

在控制台中我检查了scrollView的contentSize.width是16,这是不正确的,所以我尝试在viewDidLayoutSubviews中更正它:

self.scrollView.contentSize = self.view.bonds.size;
[self.scrollView setNeedsDisplay];
[self.scrollView layoutIfNeeded];

contentSize 变为 (414, 736),这是正确的,但显示仍然与我的第二个附加图像相同。我列出了查看详细信息:
YellowView: 帧:(8, 28, 0,120)
GreenView: 框架:(8, 156, 200,120)
GreyView: 帧:(8, 264, 0, 274)
BlueView:帧:(-252, 646, 260,30)

我观察到的是,如果我给定一个宽度常数,则视图的宽度至少大于 0,而对于黄色和灰色视图,由于它们是没有宽度约束的空白视图,它们将有问题显示.

除了给出宽度限制之外,修复它的最佳解决方案是什么?我也想知道为什么黄色和灰色的宽度为零,因为我也给了顶部、前导、尾随、高度约束?

【问题讨论】:

    标签: ios uiscrollview


    【解决方案1】:

    contentView 添加为scrollView 的子视图,然后将所有子视图添加为contentView 的子视图。 contentView 的约束设置为 width = superview.widthheight >= superview.height 并将 contentView 的 4 侧引脚固定到 scrollView(前导、顶部、尾随、底部)。更多信息:https://www.natashatherobot.com/ios-autolayout-scrollview/

    【讨论】:

    • 现在可以正常工作了。谢谢帖木儿。它基本上需要设置带有约束的mainview-scrollview-contentView。
    猜你喜欢
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多