如何在使用UIApplication.keyWindow()呈现的ViewController上禁用方向

时间:2016-03-07 15:08:33

标签: ios swift uiviewcontroller rotation

我有一个可以在应用程序中的任何位置呈现的ViewController。我用这段代码pattern ::= <alternation> alternation ::= <sequence> <alternation2> alternation2 ::= "|" <alternation> | "" sequence ::= <quantified_atom> <sequence> | "" quantified_atom ::= <atom> <quantified_atom2> quantified_atom2 ::= <modified_quantifier> | "" modified_quantifier ::= <quantifier> <modified_quantifier2> modified_quantifier2 ::= <quantifier_modifier> | "" 展示了它。所以我想禁用方向,只支持肖像。我尝试过这么多解决方案,实施UIApplication.sharedApplication().keyWindow?.rootViewController?.presentedViewController?.presentViewController但没有任何帮助。有人遇到过这个问题吗?

2 个答案:

答案 0 :(得分:0)

你是否在viewDidLoad中尝试过这个?

viewDidLoad() {
    let value = UIInterfaceOrientation.Portrait.rawValue
    UIDevice.currentDevice().setValue(value, forKey: "orientation")
    shouldAutorotate()
}

答案 1 :(得分:0)

您是否尝试在呈现viewController之前设置设备方向?

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];

然后覆盖“present”viewController中的shouldAutorotate方法并返回NO:

-(BOOL)shouldAutorotate
{
  return NO;
}

或在Swift中:

let value = UIInterfaceOrientation.Portrait.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")

override func shouldAutorotate() {
  return false
}

您将看到旋转动画,但它可以在我的应用中使用。