2016-01-18 3 views
6

В iOS 9 есть опция в инспекторе SISE Xcode под названием «Follows Readable Width», которая будет размещать отступ слева/справа, чтобы она выиграла (пока что на iPad), чтобы сделать контент более удобным для чтения.iOS 9 - Xcode: «Выполняет удобочитаемую ширину» программно

(Вы можете увидеть пример этого на приложение Twitter, когда помещен в пейзаж на iPhone 6/6с плюс.)

Во всяком случае, я не могу найти, как это сделать программно. В инспекторе Xcode SIZE это только установленный флажок. Это, очевидно, логическое значение, которое вы можете установить на любом UIView или на том, что наследуется от него. Я просто не могу найти ничего близкого к нему.

Кто-нибудь когда-либо устанавливал это программно? См. Прилагаемый скриншот.

О, I может найти «Сохранять поля надзора» просто отлично, только не свойство «Follows Readable Width».

enter image description here

+0

См. Мой обновленный ответ. Настройка по коду возможна, но только для UITableViews. –

+1

@ FrederikA.Winkelsdorf Хорошо, что обновленный ответ неверен. 'ReadableContentGuide' может быть закреплен для любого вида. – matt

+0

@matt: Извините, но это то, что я написал. «Если вы хотите связать свой макет с ним, создайте набор NSLayoutConstraints по коду и подключите их к опорным точкам' '' readableContentGuide'''. Вопрос здесь состоял в том, чтобы установить это особое свойство * по коду. Факт: свойство * * может быть установлено только для tableView. Пожалуйста, не торопитесь и пересмотрите свое мнение. То, что вы заявляете в этом однострочном лайнере, полностью включено в мой ответ. Покачаю головой. –

ответ

7

В "Последующие читаемую Ширина" вариант вы можете установить в Interface Builder осуществляется с помощью кода двумя различными способами:

1) UITableViews

Существует имущество для UITableView для запуска считываемой ширины:

if #available(iOS 9, *) { 
    tableView.cellLayoutMarginsFollowReadableWidth = false 
} 

Так что это сопоставимо с обработкой сохранения полей супервизора, что делается с помощью кода с preservesSuperviewLayoutMargins = true/false.

От АНИ документы для cellLayoutMarginsFollowReadableWidth:

Значение Логическое значение, указывающее ли поля клеток получены от ширины считываемого содержимого направляющей.

Это свойство эквивалентно опции в Interface Builder.

2) UIViews

К сожалению, нет одно свойство, как выше общедоступными с UIKit апи. Но цитата из api docs уже дает подсказку:

Вместо одного свойства для переключения с true/false, каждый UIView предоставляет свойство readableContentGuide. Это свойство является частью нового класса UILayoutGuide (iOS 9 и выше).

Чтобы понять, что это такое и как использовать его, давайте посмотрим на то, что «Следовать Читаемые Ширина» вариант не: Если включить эту опцию в интерфейсе строителя, набор ограничений автоматически добавляется к Посмотреть.

readableContentGuide в основном предоставляет вам набор этих опорных точек.

Если вы хотите привязать свой макет к читаемой ширине по коду, создайте группу NSLayoutConstraints и соедините их с опорными точками readableContentGuide. Это должно быть обернуто в блок #available(iOS 9, *).

Обновлено 04/21/16 Добавлена ​​информация о UITableView cellLayoutMarginsFollowReadableWidth

Обновлено 04/22/16 перефразировать, чтобы сделать вещи ясно. Спасибо @matt за то, что он меня понял!

+0

Как использовать readableContentGuide без использования автозапуска? Является ли это свойство доступным как простой CGFloat? –

+0

@ ВаддадиКартик Не пробовал. Вы можете попытаться получить доступ к массиву readableContentGuide layoutGuides. Каждый из них должен возвращать CGRect для своей переменной layoutFrame. См. 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. НТН! –

Смежные вопросы