iOS 9 - Xcode:“以可读宽度”编程

时间:2016-01-18 21:48:52

标签: ios xcode swift uiview ios9

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

(在iPhone 6 / 6s plus上放置横向时,你可以在Twitter应用上看到这样的例子。)

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

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

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

enter image description here

1 个答案:

答案 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让我意识到!