Ориентация в UIView, добавленном к UIWindow

У меня есть UIView, который, как предполагается, покрывает целое устройство (UIWindow) для поддержки увеличения изображения / эффект, я делаю использующую базовую анимацию, где пользователь касается кнопки на UITableViewCell, и я масштабирую связанное изображение.

Изменение масштаба работает безупречно, что я не смог выяснить, то, почему подпредставление находится все еще в режиме портрета даже при том, что устройство находится в среде. Иллюстрация ниже:

enter image description here

У меня действительно есть контроллер навигации, но это представление было добавлено к UIWindow непосредственно.

44
задан Kev 21 July 2012 в 22:58
поделиться

3 ответа

Это связано с тем, что, как вы упомянули, ваше представление было добавлено непосредственно в UIWindow, поэтому, когда метод поворота вызывается для контроллера навигации, ничего не происходит с uiview. UIView вращался бы, если бы он был подвидом представления контроллера представления. Если по каким-то причинам это невозможно сделать. Затем вы можете переопределить этот метод:

// This method is called every time the device changes orientation
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
}

И каждый раз, когда ваша ориентация изменяется, также меняйте ориентацию вашего взгляда.

1
ответ дан 26 November 2019 в 21:36
поделиться

У меня была аналогичная проблема с добавлением представлений непосредственно в окно. Возможно, это поможет: Автоматическое изменение размера UIView после добавления в окно

0
ответ дан 26 November 2019 в 21:36
поделиться

Вы можете прочитать о некоторых из возможных причин здесь:
Технические вопросы и ответы QA1688 - Почему мой UIViewController не вращается вместе с устройством?

В вашей ситуации это, вероятно, тот факт, что вы добавляете представление в качестве еще одного подпредставления в окно. Только первое подпредставление получает события вращения. Что вы можете сделать, так это добавить его как часть первого окна.

UIWindow* window = [UIApplication sharedApplication].keyWindow;
if (!window) 
    window = [[UIApplication sharedApplication].windows objectAtIndex:0];
[[[window subviews] objectAtIndex:0] addSubview:myView];    
121
ответ дан 26 November 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: