为 Autolayout 设置 UIScrollView 以便滚动 _only_ 用于小屏幕
Posted
技术标签:
【中文标题】为 Autolayout 设置 UIScrollView 以便滚动 _only_ 用于小屏幕【英文标题】:Setup UIScrollView for Autolayout in order to scroll _only_ for small screens 【发布时间】:2016-04-23 21:27:57 【问题描述】:我有一个仅限 iPhone 的纵向应用程序,它必须在 iPhone 4s 及更高版本上运行。该设计针对 iPhone 6。
我希望它以这样一种方式工作,即对于小屏幕,如果内容不合适,它会垂直滚动。一切都使用自动布局进行布局,在 iPhone 6 及更高版本上看起来很完美。但在较小的 iPhone 上,它会尝试垂直挤压内容并破坏设计。
我已经将所有内容嵌入到内容视图中,并将此视图添加到 UIScrollView。 我想如果我向内容视图添加高度约束,UIView 的 contentSize 会滚动 - 但事实并非如此。自动布局打破了这个限制。
我想我会理解带有自动布局的滚动视图的“特殊”约束...
我做错了什么?
【问题讨论】:
【参考方案1】:如果没有运行时的约束列表,几乎不可能知道实际问题是什么,但是如果您阅读这篇出色的文章,您很可能会弄清楚如何正确解决问题:
ios: How To Make AutoLayout Work On A ScrollView
【讨论】:
【参考方案2】:本视频将帮助您如何使用 UIScrollView
的自动布局约束:
https://www.youtube.com/watch?v=UnQsFlMGDsI
【讨论】:
【参考方案3】:你的约束应该是这样的,
滚动视图 - 顶部、底部、前导、尾随
视图(内容视图)- 顶部、底部、前导、尾随、固定高度并在容器中水平居中
并在该视图中添加所有其他内容。你会得到想要的结果。它将滚动到小屏幕尺寸然后是内容视图,并且不会滚动到更大的屏幕然后是内容视图。
在此设置之后,如果您无法滚动,请在size inspector
中检查content view's bottom constraint's constant
。使其为零(如果无法滚动则仅)。
如果您想更深入地了解其他答案中给出的链接,可以使用许多教程
希望这会有所帮助:)
【讨论】:
以上是关于为 Autolayout 设置 UIScrollView 以便滚动 _only_ 用于小屏幕的主要内容,如果未能解决你的问题,请参考以下文章
AutoLayout:如果需要,我可以指定应该打破哪个约束并设置备份吗?
如何将 AutoLayout 约束的常量设置为超级视图的百分比?
IOS/Autolayout:在生命周期中为代码中创建的元素设置约束