Почему для UITableView для ячейки separatorInset по умолчанию установлено значение 15, а для корневого поля представления контроллера поля "Границы макета" - 16?
На iPhone 6s, когда я устанавливаю линию разделения ячеек слева на 14, это шоу 15, я думаю, это потому, что он установлен preservesSuperviewLayoutMargins = true
по умолчанию.
Но из Apple doc: "Боковые поля варьируются в зависимости от того, как и где представлен контроллер, но могут составлять 16 или 20 баллов (в зависимости от устройства). Вы не можете изменять эти поля".
Когда я добавляю вид сбоку от корневого вида с помощью автоматического макета, и устанавливаю preservesSuperviewLayoutMargins = true
на iPhone 6s расстояние от края корневого представления до добавленного представления равно 16, поэтому оно не выровнено по левому краю представления таблицы. Как можно использовать UITableViewCell preservesSuperviewLayoutMargins = true
, а боковые поля 15, а не 16?
1 ответ
После некоторых логов я знаю почему, потому что:
tableView.preservesSuperviewLayoutMargins = false
А расположение макетов таблицы View (8, 15, 8, 15) на iPhone 6; (8, 20, 8, 20) на iPhone 6 Plus.
На яблочных документах говорится только: "Поля по умолчанию составляют 8 точек на каждой стороне. Вы можете изменять эти поля в зависимости от потребностей вашего приложения".
Но расположение таблицы представления Margins (8,8,8,8) на viewDidLoad()
, а затем перейдите на (8, 15, 8, 15) на iPhone 6.
Это очень сбивает с толку, когда я хочу добавить выравнивание по левому виду представления таблицы, а левое ребро подпредставления по левому краю выравнивания по линии разделителя представления таблицы. Мне пришлось обновить вид, как это:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
totalBar.preservesSuperviewLayoutMargins = tView.preservesSuperviewLayoutMargins
totalBar.layoutMargins = tView.layoutMargins
}
Так что мне не нужно жестко кодировать значения полей для 6 и 6 Plus, и даже для Apple, изменить значение в будущем.