Я работаю над приложением, которое полностью работает в ландшафтном режиме (UIStatusBarHidden = YES и UIInterfaceOrientation = UIInterfaceOrientationLandscapeRight). Я использую NavigationController, с моей RootViewController (MainViewController) установки, как это:UINavigationController Auto-Rotation to Landscape не обновляет фрейм UIView
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
В моей MainViewController, я загружаю мнение так:
- (void)loadView {
CGRect frame = [[UIScreen mainScreen] applicationFrame]; // This returns a portrait frame
MainView *view = [[MainView alloc] initWithFrame:frame];
self.view = view;
[view release];
}
Тогда в MainView, я м погрузочные подвиды, как это:
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
self.pdfView = [[PDFView alloc] initWithFrame:frame];
[self addSubview:pdfView];
}
returnself;
}
Мой вопрос заключается в том, что MainView правильно делает в ландшафтном режиме (несмотря на кадр, перешедшей в [MainView initWithFrame:] быть в портретном), в то время как ребенок P DFView отображает рамку портрета. Я также экспериментировал с применением преобразований в моем [UIView initWithFrame:] реализации, как это:
view.center = CGPointMake(view.frame.size.height/2.0, view.frame.size.width/2.0);
view.transform = CGAffineTransformRotate(view.transform, (M_PI/2.0));
Но это, кажется, не работает, так как значение кадра неверно. Не обращая внимания на кадр и создавая один вручную, как это, кажется, работает в некоторых случаях:
CGRectMake(0.0, 0.0, 480.0, 320.0)
Но очевидно, что делать корректировки вручную, как это меньше, чем идеал.
Любые идеи?
@ryan, как вы наследовали от UINavigationController. –