2016-01-18 26 views
6

在iOS 9中,Xcode SIZE检查器中有一个名为“Follows Readable Width”的选项,它将在视图的左侧或右侧放置填充值,到目前为止(特别是在iPad上)扩展,以使内容更易于阅读。iOS 9 - Xcode:“Follows Readable Width”编程方式

(你可以看到这样的例子在Twitter的应用程序放置在景观上时介绍iPhone 6/6S加。)

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

任何人都以编程方式设置此?请参阅附件截图。

哦,我可以找到'保留Superview边缘'就好了,只是没有'Follows Readable Width'属性。

enter image description here

+0

请看我更新的答案。通过代码设置是可能的,但仅限于UITableViews。 –

+1

@ FrederikA.Winkelsdorf那么,更新的答案是错误的。可读的内容指南可以固定在任何视图上。 – matt

+0

@matt:对不起,但这就是我写的。 “如果你想将你的布局固定在它上面,用代码创建一组NSLayoutConstraints并将它们连接到'''''readableContentGuide''定位点”。这里的问题是关于通过代码设置这个特定的*属性*。事实:*属性*只能为tableView设置。请花点时间,重新考虑你的投票结果。你在这一行中的陈述完全包含在我的答案中。现在摇头。 –

回答

7

“跟着读宽度”选项,您可以在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让我意识到!

+0

如何在不使用自动布局的情况下使用readableContentGuide?这个属性是否可以作为普通的CGFloat? –

+0

@VaddadiKartick还没有尝试过。您可以尝试访问可读内容指南的layoutGuides数组。他们每个人都应该为其layoutFrame变量返回一个CGRect。请参阅https://developer.apple.com/documentation/uikit/uiview/1622644-readablecontentguide,https://developer.apple.com/documentation/uikit/uilayoutguide和https://developer.apple.com/documentation/uikit/uilayoutguide/1619657-layoutframe。心连心! –