Почему длина topLayoutGuide отличается на iPhone и iPad?
На iPad мой контроллер вида (внутри контроллера навигации, как детальный вид контроллера с разделенным видом) имеет длину topLayoutGuide 64 с показанной панелью навигации и 20 с скрытой панелью навигации. Это имеет смысл.
На iPhone в альбомной ориентации строка состояния автоматически скрывается, а панель навигации становится короче. Длина topLayoutGuide читается как 32 с показанной навигационной панелью, а 0 с скрытой. Это также имеет смысл.
Однако на iPhone в портретной ориентации он имеет длину topLayoutGuide, равную 44 с показанной навигационной панелью и 0 со скрытой. Строка состояния отображается автоматически; почему topLayoutGuide не признает дополнительные 20 пикселей пространства?
Я бы предпочел не писать неприятный условный код только для того, чтобы iPhone правильно читал свой topLayoutGuide. Могу ли я установить свойство представления или контроллера навигации, которое будет возвращать интуитивные значения для topLayoutGuide? И имеет ли это какое-то отношение к тому, чтобы быть внутри контроллера разделенного представления?
1 ответ
Так не должно быть. Руководство toplayout всегда должно оставаться одинаковым как на ipad, так и на iphone. Проверьте дважды, если вы делаете какие-либо ошибки в подсчете.
Вы можете провести один эксперимент: перетащите один вид в ВК (без навигационной панели) и установите его в y=20
а затем нажмите на булавку и проверьте верхнюю часть, щелкнув стрелку раскрывающегося списка. По умолчанию будет показано расстояние от верхней панели.
Смотрите на скриншот:
Теперь, если вы закрепите это ограничение, а затем откроете в iphone or ipad
он останется точно над строкой состояния, что означает 20 пикселей ниже от края представления.
Вы установили ограничения с 0 distance (constant = 0)
с верхней версткой, чтобы поддерживать 0 distance with layout guide
и так это выглядит на 20 пикселей ниже от края.
Теперь, если направляющая верхнего слоя становится равной 0 (как вы сказали в вопросе), тогда это представление должно касаться края, потому что оно управляет расстоянием 0 с помощью верхнего ориентира. и ваше руководство по макету равно нулю, поэтому представление должно касаться края, или это у должно быть 0, но этого не происходит, так что я могу сказать, что вы делаете неправильный расчет
Надеюсь, это поможет:)