Я создал приложение для поддержки всех ориентаций.
Также я создал таблицу и панель поиска в методе viewDidLoad
(без использования xib). Я также написал следующий код для настройки позиционирования таблицы и панели поиска.
Он работает правильно, когда я запускаю свое приложение в книжной ориентации и когда я поворачиваюсь в альбомную ориентацию, он корректно корректирует виды.
Но когда я запускаю свое приложение в ландшафтном режиме, виды не корректируются, вместо этого они занимают положение портретного вида. Но опять же, когда я поворачиваюсь в портретной, а затем в альбомной ориентации, все работает хорошо.
Также для обеспечения правильной ориентации я написал NSLog
внутри этого метода, и он показывает мне правильное значение.
Также, чтобы этот метод (adjustViewsForOrientation
) вызывался явно, я также вызвал метод в viewDidLoad
.
[self adjustViewsForOrientation:self.interfaceOrientation];
Вот фрагмент кода:
- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
if (orientation == UIInterfaceOrientationLandscapeLeft ||
orientation == UIInterfaceOrientationLandscapeRight) {
aTableView.frame = CGRectMake(705, 220, 320, 280);
sBar.frame=CGRectMake(805, 0, 220, 40);
NSLog(@"inside landscape");
}
else if (orientation == UIInterfaceOrientationPortrait ||
orientation == UIInterfaceOrientationPortraitUpsideDown) {
aTableView.frame = CGRectMake(450, 220, 320, 280);
sBar.frame=CGRectMake(550,3,220,40);
}
}
- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration {
// [self adjustViewsForOrientation]
[self adjustViewsForOrientation:toInterfaceOrientation];
NSLog(@"landscap");
}