在iOS 9中,Xcode SIZE检查器中有一个名为“Follows Readable Width”的选项,它会在视图的左/右侧放置填充,这样它就不会伸展到目前为止(特别是在iPad上)为了使内容更容易阅读。
(在iPhone 6 / 6s plus上放置横向时,你可以在Twitter应用上看到这样的例子。)
无论如何,我似乎无法找到如何以编程方式执行此操作。在Xcode SIZE检查器中,它只是您设置的复选框。它显然是你可以在任何UIView或从它继承的任何东西上设置的布尔值。我似乎无法找到任何接近它的东西。
有人以编程方式设置此项吗?请参阅随附的屏幕截图。
哦,我可以找到'保存Superview边距'就好了,而不是'跟随可读宽度'属性。
答案 0 :(得分:10)
您可以在Interface Builder中设置的“Follow Readable Width”选项由代码以两种不同的方式处理:
1) UITableViews
UITableView
有一个属性可以触发可读宽度:
if #available(iOS 9, *) {
tableView.cellLayoutMarginsFollowReadableWidth = false
}
因此,这与保留superview边距的处理相当,后者由preservesSuperviewLayoutMargins = true/false
的代码完成。
来自cellLayoutMarginsFollowReadableWidth
的api文档:
一个布尔值,指示是否派生单元格边距 从可读内容指南的宽度。
此属性与Interface Builder中的选项等效。
2) UIViews
可悲的是,UIKit api没有像上面这样公开的单一财产。但是来自api文档的引用已经提示:
每个UIView都提供true/false
属性,而不是使用readableContentGuide
切换的单个属性。该属性是新UILayoutGuide
类(iOS 9及更高版本)的一部分。
要了解它是什么以及如何使用它,让我们看一下“Follow Readable Width”选项的作用:如果在界面构建器中启用该选项,则一组约束是自动添加到该视图。
readableContentGuide
基本上为您提供了一组这些锚点。
如果要通过代码将布局固定为可读宽度,请创建一组NSLayoutConstraints并将它们连接到readableContentGuide
的锚点。这也必须包含在#available(iOS 9, *)
块中。
已于2016年4月21日更新 添加了有关UITableView cellLayoutMarginsFollowReadableWidth
的信息已于2016年4月22日更新 重新说明要清楚。感谢@matt让我意识到!