我只是创建一个新的单一视图应用程序,并在ViewController.m文件中编写三个函数。
-(BOOL)shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;
}
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationLandscapeLeft;
}
第一个问题
我希望模拟器旋转我的视图,但视图方向是纵向。我发现在ViewController中没有调用第三个函数。为什么呢?
第二个问题
我读了一些博客,他们说如果应该在返回NO,func supportedInterfaceOrientations不会调用,但在我的测试中,这个函数调用了好几次,为什么?答案 0 :(得分:1)
您必须使用UINavigationController子类(不确定您在项目中使用导航...)并在子类中实现这些方法。不要忘记将子类设置为视图控制器导航控制器 导航控制器子类的示例:
// add this in your CustomNavigationController.h file
#import <UIKit/UIKit.h>
@interface CustomNavigationController : UINavigationController <UINavigationControllerDelegate>
@end
// add this in your : CustomNavigationController.m file
#import "CustomNavigationController.h"
@interface CustomNavigationController ()
@end
@implementation CustomNavigationController
- (BOOL)shouldAutorotate {
return [self.visibleViewController shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations {
return [self.visibleViewController supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return [self.visibleViewController preferredInterfaceOrientationForPresentation];
}
@end