我有一个iPhone应用程序,它始终以纵向工作。
此应用有一个导航视图控制器和rootViewcontroller
,它也以纵向显示。我希望当iPhone转为横向时显示viewController
,并在应用转回肖像时关闭此视图控制器。
目前我已经实现了这一点,但我的观点完全被移动了:
步骤1:
步骤2:
第三步:
我尝试了几件事,但我不知道我是否选择了正确的方法:
-(BOOL)shouldAutorotate
{
return YES;
}
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
}
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight) {
UIStoryboard *currentStoryboar = [self storyboard];
ASTBigProgressViewController *bigProgress = [currentStoryboar instantiateViewControllerWithIdentifier:@"ASTBigProgressViewController"];
[self presentViewController:bigProgress animated:YES completion:^{
}];
}
}
-(NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |
UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
}
我希望在转动视图控制器时,它不会将视图保持在同一位置。我试过了:
-(BOOL)shouldAutorotate
{
return NO;
}
但显然没有调用didRotateFromInterfaceOrientation
方法。
有什么想法吗?
答案 0 :(得分:0)
Creating an Alternate Landscape Interface上的Apple文档可能正是您所需要的。
答案 1 :(得分:0)
在旋转过程中不要呈现或关闭视图控制器,这是在viewWillRotateRotat和viewDidRotate ......以及shouldViewRotate等中。
您可以使用performSelector:withDelay。即使是0.0或0.01的短暂延迟也应该可以解决问题。