iOS 9 - Xcode:以编程方式"遵循可读宽度"

Mar*_*man 8 xcode uiview ios swift ios9

在iOS 9中,Xcode SIZE检查器中有一个名为"Follows Readable Width"的选项,它将在视图的左/右侧放置填充,以便它不会伸展到目前为止(特别是在iPad上)以便使内容更容易阅读.

(当您在iPhone 6/6s plus上放置横向时,您可以在Twitter应用上看到此示例.)

无论如何,我似乎无法找到如何以编程方式执行此操作.在Xcode SIZE检查器中,它只是您设置的复选框.它显然是你可以在任何UIView或从它继承的任何东西上设置的布尔值.我似乎无法找到任何接近它的东西.

有人以编程方式设置此项吗?请参阅随附的屏幕截图.

哦,我可以很好地找到'保存Superview边距',而不是'跟随可读宽度'属性.

在此输入图像描述

Fre*_*orf 11

您可以在Interface Builder中设置的"Follow Readable Width"选项由代码以两种不同的方式处理:

1)UITableViews

有一个UITableView触发可读宽度的属性:

if #available(iOS 9, *) {
    tableView.cellLayoutMarginsFollowReadableWidth = false
}
Run Code Online (Sandbox Code Playgroud)

因此,这与保存超视图边距的处理相当,后者由代码完成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, *)区块中.

更新时间:04/21/16 添加了有关UITableView cellLayoutMarginsFollowReadableWidth的信息

更新时间04/22/16 重新说明要清楚.感谢@matt让我意识到!