我正在构建一个具有由RootViewController控制的多个UIViewControllers的应用程序。目前在plist中,应用程序默认为LandscapeRight。
假设我有以下可以加载到RootViewController中的文件:
我还在RootViewController的shouldAutorotateToInterfaceOrientation中添加了以下内容:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if ([currentClass class] == PortraitView.class) {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
} else {
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
}
所以一切顺利,直到我加载到PortraitView并在viewWillAppear中添加以下内容(类似于this thread
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) { //UIInterfaceOrientationLandscapeRight) {
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-90));
self.view.bounds = CGRectMake(0.0, 0.0, 320, 480);
self.view.center = CGPointMake(240.0f, 160.0f);
}
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
这会产生一个正确加载的PortraitView但现在我的问题是在我的PortraitView中我有2个子视图我想翻转,但因为我旋转了我的视图UIViewAnimationTransitionFlipFromLeft实际上使它从上到下翻转而不是从左到右。我不能为我的生活弄清楚如何告诉PortraitView它的肖像。
当我检查[[UIDevice currentDevice] orientation]时;它告诉我它在景观中。当我尝试使用shouldAutorotateToInterfaceOrientation并将其设置为Portrait时,它将旋转我的视图,使其不再正确。
希望这是有道理的!一直在看这个问题。
谢谢!
答案 0 :(得分:0)
我遇到的情况略有不同;横向模式下的UIViewController
子类,从上到下而不是从左到右交换。
对我有用的修复方法是将我的所有观看次数添加到单个“内部”视图中,然后将其翻转而不是UIViewController
的正常view
。
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
forView:[self innerView]
cache:YES];
其中[self innerView]
是[self view]
的唯一子项,并且所有子视图都位于其中。