У меня возникла проблема с несколькими экранами в моем приложении, но я объясню, что происходит с моим домашним экраном. Надеюсь, решение не такое сложное, как я думаю. Таким образом, на моем домашнем экране есть логотип вверху, метка (заголовок) под ним, 3 горизонтальные кнопки под ним и, наконец, кнопки настроек и информации в нижнем левом и правом углу соответственно при портретной ориентации. Чтобы обеспечить альбомную ориентацию, маски изменения размера не могли добиться желаемого вида, поэтому я реализовал
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
с операторами if и else, «if» использует CGRectMakes для отрисовки всех элементов там, где они должны располагаться в альбомной компоновке, а «else» перерисовывает их обратно на исходные места при изменении обратно на портретную ориентацию. Все это работает очень хорошо. Я вспомнил, что мы должны иметь возможность обрабатывать строку состояния с двойной высотой, поэтому я смоделировал ее, чтобы посмотреть, что она сделает с моим приложением. Когда я нахожусь на главном экране и включаю и выключаю его, автоматическое изменение размера элементов (которые настроены на настройку в соответствии с верхней частью экрана) работает хорошо, слегка сжимая все немного и ничего не скрывая. Включаю и выключаю без проблем.
Вот в чем проблема:
Когда у меня включена двойная верхняя строка состояния на другом экране, а затем я возвращаюсь на свой домашний экран, изменение размера не происходит, и он перерисовывает мой экран в полном размере в соответствии с координатами и размерами, которые у меня есть в методе, который я упоминалось ранее, поэтому кнопки настроек и информации нарисованы на полпути к нижней части экрана. То же самое происходит при переключении с альбомной ориентации на портретную на главном экране с уже включенной двойной верхней строкой состояния.
Точно так же у меня есть карта между панелью навигации и вкладками на другой странице. Когда вы уже находитесь на странице и включаете и выключаете ее, все красиво изменяет размер (рамка карты меняет высоту, а панель навигации перемещается вниз). Но опять же, у меня есть проблема при переключении на этот экран с другого экрана или из альбомной ориентации, потому что вместо соответствующего автоматического изменения размера вид карты и панель навигации частично смещаются за панель вкладок, скрывая товарный знак Google, который является основанием за отклонение приложения.
Извините за многословие, но я хотел четко описать, какие обстоятельства вызывают эту проблему. Буду очень признателен за любые идеи, так как я действительно не знаю, как к этому подойти.