的“跟着读宽度”选项,您可以在Interface Builder中设置由代码以两种不同的方式处理:
1)UITableViews
有一个UITableView
属性触发可读宽度:
if #available(iOS 9, *) {
tableView.cellLayoutMarginsFollowReadableWidth = false
}
因此,这与保留超视图边距的处理相当,这是通过代码preservesSuperviewLayoutMargins = true/false
完成的。
从API文档cellLayoutMarginsFollowReadableWidth
:
一个布尔值,表示该单元是否边距衍生 从可读内容指南的宽度。
此属性与Interface Builder中的选项等效。
2)UIViews
可悲有像上述没有一个单一的属性可公开获得的与所述的UIKit API。但是api文档的报价已经给出了提示:
而不是一个单一的属性切换true/false
,每个UIView提供了一个readableContentGuide
属性。该属性是新的UILayoutGuide
类(iOS 9和更高版本)的一部分。
要明白是什么,以及如何使用它,让我们来看看什么“跟着读宽度”选项不:如果启用在Interface Builder这个选项,一组约束被自动添加到视图。
readableContentGuide
基本上为您提供了一组这些锚点。
如果要通过代码将布局固定为可读宽度,请创建一组NSLayoutConstraints并将它们连接到readableContentGuide
的锚点。这也必须包装在#available(iOS 9, *)
区块中。
更新16年4月21日 约增加了信息的UITableView cellLayoutMarginsFollowReadableWidth
更新16年4月22日 措词,把事情说清楚。感谢@matt让我意识到!
请看我更新的答案。通过代码设置是可能的,但仅限于UITableViews。 –
@ FrederikA.Winkelsdorf那么,更新的答案是错误的。可读的内容指南可以固定在任何视图上。 – matt
@matt:对不起,但这就是我写的。 “如果你想将你的布局固定在它上面,用代码创建一组NSLayoutConstraints并将它们连接到'''''readableContentGuide''定位点”。这里的问题是关于通过代码设置这个特定的*属性*。事实:*属性*只能为tableView设置。请花点时间,重新考虑你的投票结果。你在这一行中的陈述完全包含在我的答案中。现在摇头。 –