Я пытаюсь скрыть изображение в контроллере представления, когда устройство повернуто. Я отправляю уведомление в PlayerViewController и слушаю для него в приложение делегата, который отвечает за bannerView:Скрыть UIView при вращении устройства - не работает, когда устройство горизонтально
- (void)orientationChanged:(NSNotification *)notification {
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if ((orientation == UIDeviceOrientationLandscapeLeft) ||
(orientation == UIDeviceOrientationLandscapeRight)) {
bannerView.hidden = ([[self.navigationController visibleViewController] isKindOfClass:[PlayerViewController class]]) ? YES : NO;
} else {
bannerView.hidden = NO;
}
}
PlayerViewController отправляет уведомление и приложение делегат скрывает bannerView. Однако, когда устройство укладывается на стол, изображение показывает. Прекрасно работает, когда устройство удерживается вертикально, но по горизонтали изображение появляется ... нечетное.
Вот код для отправки уведомлений:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration {
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
... hide other stuff in this view controller
}
Любые идеи, почему это странное поведение возникающую?
Только один лакомый кусочек дополнительной информации. В тренажере изображение показывает, когда устройство находится в перевернутом положении, даже если у меня есть:
- (BOOL)shouldAutorotateToInterfaceOrientation (UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIDeviceOrientationPortrait) {
return YES;
} else {
return NO;
}
}
Похоже, я прыгнул с пистолета. Данг все еще отображается, хотя я переместил уведомление на willRotateToInterfaceOrientation: duration: –
Ах, извините, что, возможно, это сработает: UIDevice возвращает ориентацию самого устройства, не обязательно ваш пользовательский интерфейс, так что есть также 'UIDeviceOrientationFaceUp 'и' FaceDown'. Попробуйте бросить точку останова в свой метод, возможно, это будет возвращено и испортит ваш условный. – lxt
Вы, сэр, гений! –