У меня есть UIView, который, как предполагается, покрывает целое устройство (UIWindow) для поддержки увеличения изображения / эффект, я делаю использующую базовую анимацию, где пользователь касается кнопки на UITableViewCell, и я масштабирую связанное изображение.
Изменение масштаба работает безупречно, что я не смог выяснить, то, почему подпредставление находится все еще в режиме портрета даже при том, что устройство находится в среде. Иллюстрация ниже:
У меня действительно есть контроллер навигации, но это представление было добавлено к UIWindow непосредственно.
Это связано с тем, что, как вы упомянули, ваше представление было добавлено непосредственно в UIWindow, поэтому, когда метод поворота вызывается для контроллера навигации, ничего не происходит с uiview. UIView вращался бы, если бы он был подвидом представления контроллера представления. Если по каким-то причинам это невозможно сделать. Затем вы можете переопределить этот метод:
// This method is called every time the device changes orientation
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
}
И каждый раз, когда ваша ориентация изменяется, также меняйте ориентацию вашего взгляда.
У меня была аналогичная проблема с добавлением представлений непосредственно в окно. Возможно, это поможет: Автоматическое изменение размера UIView после добавления в окно
Вы можете прочитать о некоторых из возможных причин здесь:
Технические вопросы и ответы QA1688 - Почему мой UIViewController не вращается вместе с устройством?
В вашей ситуации это, вероятно, тот факт, что вы добавляете представление в качестве еще одного подпредставления в окно. Только первое подпредставление получает события вращения. Что вы можете сделать, так это добавить его как часть первого окна.
UIWindow* window = [UIApplication sharedApplication].keyWindow;
if (!window)
window = [[UIApplication sharedApplication].windows objectAtIndex:0];
[[[window subviews] objectAtIndex:0] addSubview:myView];