В моем приложении для iPhone у меня есть контроллер вида с двумя видами (по существу, передний вид &). Вид спереди - основной UIView, а задний вид - вторичный UIView, который добавляется в качестве подсмотра, используя [self.view addSubview:backView]
при отображении задней части и [backView removeFromSuperview]
при скрытии. Однако, когда меняется ориентация, у меня возникает следующая проблема: главный UIView (frontView) вращается & все его элементы изменяются правильно, но вторичный/subview UIView (backView) не вращается & все его элементы не изменяются правильно , Есть ли у кого-нибудь предложения по тому, как сделать вторичный UIView автоматически отрегулированным в соответствии с правилами, установленными в Interface Builder?UIView Subview Не авторезистентно при изменении ориентации
ответ
В конце концов, решение, которое я нашел, было просто отделить мои UIViews от отдельных UIViewControllers и убедиться, что любые представления, которые я хотел бы повернуть, имели только один UIView.
Если я правильно понял, во время вращения «backView» был удален из его супервизора, да? Если это так, в этом причина проблемы. Свойство autoresize определяет, как изменяется размер представления относительно его супервизора. Если у него нет супервизора, он не будет изменять размер.
Возможно, использование [backView setHidden: YES] вместо [backView removeFromSuperview] будет достаточным для ваших нужд.
У меня была такая же проблема, вот как я установил его на основе предложений imaginaryboy в (спасибо!)
Добавьте Backview к ViewController в viewDidLoad и спрятать его в то же самое время. Покажите это при необходимости, Скройте его снова. Установите изменение размера backview на UIViewAutoresizingFlexibleWidth в IB (или код, я думаю, я использовал IB)
Не то, чтобы это была та же проблема, но я обнаружил аналогичную проблему при добавлении 2 подзадач в моем приложении: метод didFinishLaunchingWithOptions. Поскольку ваша ссылка выше использует [self.view addSubview: view], я бы понял, что это означает, что я не являюсь вашим UIWindow. При добавлении дополнительного диспетчера представлений в окно App Delegate (UIWindow), второй контроллер просмотра НЕ будет получать никаких событий вращения и никогда не будет вращаться. Только первый контроллер представления, добавленный в UIWindow, будет вращаться. См .: Technical Q&A QA1688 Я считаю, что это также влияет на представления, добавленные после первого представления, где первое представление впоследствии удаляется из супервизора.
Я закончил с предложением, которое я прочитал в другом месте, чтобы использовать отдельные виды для каждой ориентации, тем самым устраняя необходимость беспокоиться о изменении размера. Как всегда, YMMV.
Or; если вы хотите, чтобы избежать дополнительного контроллера, вы можете достичь того же эффекта, установив view.frame в willRotateToInterfaceOrientation :: как так
if(UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) ;//set stubborn view.frame for landscape orientation
else ; //set stubborn view.frame for portrait orientation
Хотя это чувствует, как взломать; это просто.
- 1. Изменение UIView при изменении ориентации
- 2. Как скрыть UIView полностью при изменении ориентации?
- 3. Как обновить размер uiview при изменении ориентации?
- 4. Рамка UIView корректно обновляется при изменении ориентации
- 5. Пользовательский UIView не вращается при изменении ориентации устройства
- 6. Каков правильный способ вызвать перерисовку subview при изменении ориентации устройства?
- 7. Размер UIScrollview при изменении ориентации
- 8. Проблемы при изменении ориентации ориентации
- 9. UIView subview UIWindow не вращается
- 10. Не обновлять UIView subView?
- 11. UIView не распознает subview
- 12. UIView subview не анимирует
- 13. UIView не авторезистирует subview
- 14. NullPointerException при изменении ориентации
- 15. Добавление CALayer в UIView с возможностью перерисовки при изменении ориентации
- 16. NullPointerException при изменении ориентации
- 17. Центр UIActivityIndicatorView в UiView при изменении ориентации устройства
- 18. iAD вид снизу при изменении ориентации
- 19. UIView без изменений при изменении от dispatch_async
- 20. Скрыть UITabBar при изменении ориентации
- 21. Добавление UIView subView не работает
- 22. UIView subview не меняет ориентацию
- 23. UIView subview не получает штрихи
- 24. Размер UIScrollView при изменении ориентации
- 25. iscroll проблема при изменении ориентации
- 26. Применение разбился при изменении ориентации
- 27. hide linearLayout при изменении ориентации
- 28. DialogFragment отклонен при изменении ориентации
- 29. Перезагрузка UITableViewCell при изменении ориентации
- 30. перезапуска SherlockActivity при изменении ориентации
К сожалению, это происходит даже тогда, когда backView также находится в режиме супервизора. И я просто попробовал ваше предложение использовать '[backView setHidden: YES]', и это тоже не помогло. – Jason
Является backView.autoresizesSubviews == ДА? Предположительно, это будет так, потому что это дефолт, но пока это единственное, что я могу придумать. – imaginaryboy
Да, это равно YES. – Jason