【问题标题】:Stop autorotation of UIViewController at creation time在创建时停止 UIViewController 的自动旋转
【发布时间】:2015-03-14 08:04:52
【问题描述】:

有什么方法可以设置 UIViewController 对象在启动时的自动旋转行为? 我希望它永远不会旋转,所以我尝试了这个:

UIViewController *myViewController = [[UIViewController alloc]init];
myViewController.shouldAutorotate = NO;

看起来合乎逻辑,但它不起作用。获取错误信息:

没有用于赋值给属性的 setter 方法 'setShouldAutorotate:'

还是只能通过子类化?

【问题讨论】:

    标签: ios objective-c xcode uiviewcontroller autorotate


    【解决方案1】:

    你应该这样:

    - (NSUInteger)supportedInterfaceOrientations {
        return UIInterfaceOrientationMaskPortrait;
    }
    

    返回值

    指定支持哪些方向的位掩码。 有关有效的位掩码值,请参阅 UIInterfaceOrientationMask。价值 此方法返回的值不能为 0。

    讨论

    当用户改变设备方向时,系统 在根视图控制器或最顶层调用此方法 填充窗口的视图控制器。如果视图控制器支持 新方向,窗口和视图控制器旋转到 新方向。仅当视图控制器的 shouldAutorotate 方法返回 YES。

    重写此方法以报告视图的所有方向 控制器支持。视图控制器的默认值 支持的界面方向设置为 用于 iPad 的 UIInterfaceOrientationMaskAll 和 iPhone 惯用语的 UIInterfaceOrientationMaskAllButUpsideDown。

    系统与视图控制器支持的方向相交 应用程序支持的方向(由 Info.plist 确定 文件或应用程序委托的 应用程序:supportedInterfaceOrientationsForWindow:方法)到 判断是否旋转。

    来源:UIViewController on iOS Developer Library

    【讨论】:

    • 好的,你的意思是只有通过子类化才有可能?
    • 是的,你必须继承它。
    • 我也试过这个(导致与上面相同的错误): UIViewController *myViewController = [[UIViewController alloc]init]; myViewController.supportedInterfaceOrientations = UIInterfaceOrientationMaskPortrait;
    • 如果你是对的,这有点令人失望。嘿苹果人:改变这个!
    猜你喜欢
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    相关资源
    最近更新 更多