Subview не ориентирован должным образом

Я создал подвид, который используется как HUD в приложении для iOS. Приложение поддерживает книжную и альбомную ориентацию экрана.

Подвид иногда появляется в портретном режиме, даже если режим ландшафтный. Подвид добавляется этими строками:

self.infoHUDViewController = [[[InfoHUDViewController alloc] initWithNibName:@"InfoHUD" bundle:nil] autorelease];
[self.view addSubview:self.infoHUDViewController.view];

Так что это работает очень хорошо, если подпредставление добавляется в метод viewDidLoad. Однако он не работает в ландшафтном режиме, если представление добавляется методом IBAction, который реагирует на нажатие кнопки. Подпредставление выглядит так, как если бы оно было в портретном режиме (оно кажется повернутым на 90°, заполняет только половину ширины экрана и выходит за пределы экрана).

Что действительно странно: в методе инициализации контроллера представления подпредставления ориентация экрана правильно установлена ​​​​на альбомную. Я что-то упустил здесь?


person spa    schedule 26.10.2011    source источник


Ответы (1)


Я нашел решение этой проблемы.

я добавил

if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) {
    self.view.frame = CGRectMake(0.0f, 0.0f, 480.0f, 320.0f);
} else {
    self.view.frame = CGRectMake(0.0f, 0.0f, 320.0f, 480.0f);
}

к методу viewDidLoad. Теперь все работает как ни в чем не бывало во всех ситуациях.

person spa    schedule 27.10.2011
comment
Вы жестко запрограммировали размер экрана, что не является хорошей идеей для будущих устройств, включая iPhone 5 и 6. - person Patrick Collins; 23.11.2014
comment
правда ... но этот ответ тоже был написан давным-давно. Теперь я бы больше не стал жестко кодировать размеры кадров. - person spa; 16.12.2014