iphone SDK проблема ориентации на представление / просмотр - PullRequest
1 голос
/ 28 января 2010

У меня проблема с ориентацией iphone sdk ...

Я помещаю «удерживающий» контроллер вида в навигационный контроллер. Холдинг ViewViewController использует viewDidLoad, чтобы показать панель навигации navigationController, добавить к нему кнопку-перевертыш и селектор для кнопки-перекидного. Затем он добавляет подпредставление, используя UIViewAnimationTransitionNone, показывая UIView, содержащий TableView. При нажатии на кнопку переворачивания контроллер удерживающего вида удаляет загруженное подпредставление и заменяет его другим подпредставлением, также содержащим представление с табличным представлением, и преобразует с помощью переворачиваемой анимации. Проблема возникает при переключении и изменении ориентации. хотя как переворачивание, так и вращение вначале работают, если я переворачиваюсь в ландшафтном режиме, перевернутое представление как бы «обрезается» до ширины портрета, хотя на самом деле отображается в альбомной ориентации, вращение не исправляет это, вы должны перевернуть, повернуть вернуться к портрету, затем снова переверните. Похоже, что холдинговый вид не регистрирует изменение ориентации, но я знаю, что это так, как я реализовал

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];

на всех 3 контроллерах вида, и я вижу, что для каждого из них вызывается функция directionChanged.

Все три viewcontrollers устанавливают автоматическое изменение размера в viewDidLoad

self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

и я также реализовал

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
 return YES;
}

У кого-нибудь есть идеи, что происходит, или, что более важно, что я могу сделать, чтобы это исправить?

большое спасибо

1 Ответ

3 голосов
/ 05 января 2011

У меня была похожая проблема с добавлением подпредставления. Подвид был обрезан в альбомной ориентации. Я должен был установить рамку подпредставления перед его добавлением, чтобы подпредставление заполнялось правильно.

Вот код, который исправил мою проблему: [subcontroller.view setFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

...