ios preferredInterfaceOrientationForPresentation未调用

时间:2015-11-27 07:01:08

标签: ios objective-c

我只是创建一个新的单一视图应用程序,并在ViewController.m文件中编写三个函数。

-(BOOL)shouldAutorotate
{
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
        return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;
}

-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationLandscapeLeft;
}

第一个问题

我希望模拟器旋转我的视图,但视图方向是纵向。我发现在ViewController中没有调用第三个函数。为什么呢?

第二个问题

我读了一些博客,他们说如果应该在返回NO,func supportedInterfaceOrientations不会调用,但在我的测试中,这个函数调用了好几次,为什么?

1 个答案:

答案 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