Я искал эту информацию и не могу точно определить ответ на вопрос, который у меня есть.Автоматически устанавливать вертикальный размер UIView на основе вертикального размера устройства (включая изменения автоматического макета)
Я пишу приложение и хотел бы, чтобы вертикальное пространство дочернего UIView поддерживало высоту устройства или вращение родительского устройства независимо от ориентации и без жесткого кодирования значений раньше времени.
Структура моего макета:
ViewContainer
UIView
UIScrollView
UIView (Content View)
В частности, я хотел бы иметь вертикальное пространство содержимого View изначально быть установлен родной высота устройства/ориентации, что в настоящее время она работает на, и когда устройство вращается, я хотел бы, чтобы вертикальное пространство изменилось на новую вертикальную высоту. UIScrollView будет использоваться для панорамирования только по горизонтали.
Я буду использовать кварц для рисования на вид. Установить начальную высоту через intrinsicContentSize
? Если да, то как мне выполнить запрос родительского представления?
Я попытался использовать self.superview
в представлении контента, но это не работает. Как узнать, что произошло изменение, и после того, как это произошло, как мне получить новое разрешение Y, а затем применить его? Также я не хочу отключать автоматический макет, если мне это не нужно.
Вот визуальное того, что я хочу, если я не ясно дал понять: https://www.evernote.com/l/AAI3VFkKBARPlYPsoURJOwAmIiGielF5p-w
Я бы использовал размер 'UIScreen.mainScreen(). Bounds.size.height' (или ширина, если вы в ландшафте). Затем используйте макрос 'UIDeviceOrientationIsLandscape()'. Это еще несколько других. Посмотрите на них. –
Я пробовал модифицировать код Pure AutoLayout в TN2154, но я не могу обнаружить изменения (и не уверен, что это правильный способ атаковать проблему в первую очередь). Я могу форсировать размер через intrinsicContentSize, но не уверен, как правильно определить размер или когда происходит поворот. Я смотрел на viewWillTransitionToSize, но не уверен, что это правильный подход. – Tornado
Чтобы получать уведомления об изменениях ориентации, вы можете подписаться на уведомления. Не уверен, что это подходит для вашего прецедента, но вот фрагмент «[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (orientationChanged :) name: UIDeviceOrientationDidChangeNotification object: nil];' Тогда просто убедитесь, что у вас есть метод под названием 'orientationChanged 'который принимает параметр' NSNotification' –