2016-05-02 4 views
0

На iPhone 6s, когда я установил линейку разделителей ячеек на 14, отображается 15, я думаю, это потому, что по умолчанию установлено preservesSuperviewLayoutMargins = true.Почему UITableView cell separatorInset по умолчанию равен 15, когда поля представления контроллера корневого представления составляют 16?

Но из apple doc: «Боковые поля меняются в зависимости от того, как и где представлен контроллер, но могут быть либо 16, либо 20 точек (в зависимости от устройства). Вы не можете изменить эти поля».

Когда я добавляю вид сбоку корневого представления по автоматическому расположению и устанавливаю preservesSuperviewLayoutMargins = true, расстояние от края корневого вида до вида, которое я добавил, равно 16 на iPhone 6s, поэтому он не выровнен по левому краю край представления таблицы. Как UITableViewCell может использовать preservesSuperviewLayoutMargins = true, а боковые поля - 15, а не 16?

ответ

0

После некоторых журналов, я знаю, почему, это потому, что:

tableView.preservesSuperviewLayoutMargins = false 

И такую ​​таблицу в layoutMargins есть (8, 15, 8, 15) на iPhone 6; (8, 20, 8, 20) на iPhone 6 Plus.

В документах на яблоках сказано: «По умолчанию по умолчанию по 8 пунктов с каждой стороны. Вы можете изменить эти поля на основе потребностей вашего приложения».

Но layoutMargins вид таблицы является (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, изменить значение в будущем.

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

  • Нет связанных вопросов^_^