在“Swift3”中可编程设置方向

Posted

技术标签:

【中文标题】在“Swift3”中可编程设置方向【英文标题】:programmably setting orientation in "Swift3" 【发布时间】:2016-10-25 17:08:26 【问题描述】:

我在编写 swift2 代码时确实知道如何修复方向,但是在他们将函数更改为“var”后,新代码不起作用。

这是用于检查的示例 UIViewController 类

class QuizVC: UIViewController

override func viewDidLoad() 
    super.viewDidLoad()

    //Quiz scene
    self.view.backgroundColor = UIColor(red: 240/255, green: 238/255, blue: 226/255, alpha: 1)//sand fron hu

    let testBtn: UIButton = UIButton()//for orientation test
    testBtn.setTitle("\" Orientation????????Check \"", for: .normal)
    testBtn.sizeToFit()
    testBtn.center = self.view.center
    testBtn.titleLabel?.textColor = UIColor.white
    testBtn.backgroundColor = UIColor.brown
    self.view.addSubview(testBtn)
    //Do any additional setup after loading the view, typically from a nib.


override var supportedInterfaceOrientations : UIInterfaceOrientationMask //not working
    return UIInterfaceOrientationMask.landscape

override var shouldAutorotate: Bool //not working
    return false


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

当我运行这段代码时,它似乎只是忽略了那个覆盖。 视图自动旋转,按钮和标签不显示为横向。甚至没有修复。

我也尝试将方向值直接放入变量中,但 'supportedInterfaceOrientations' 是 get-only 属性。 当然,旧代码被接受为错误,因为不再有名为“supportedInterfaceOrientations()”的函数。只有变量存在。

有人在 Swift3 中尝试过吗?

我在 ios10 上使用 swift3。

【问题讨论】:

How to lock viewController in Portrait mode的可能重复 【参考方案1】:
    移除 shouldAutorotate 在(应用设置页面)/常规/设备方向中启用横向

这应该可以正常工作。

【讨论】:

【参考方案2】:
struct AppUtility 

  static func lockOrientation(_ orientation: UIInterfaceOrientationMask) 

    if let delegate = UIApplication.shared.delegate as? AppDelegate 
      delegate.orientationLock = orientation
    
  

  /// OPTIONAL Added method to adjust lock and rotate to the desired orientation
  static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation:UIInterfaceOrientation) 

    self.lockOrientation(orientation)

    UIDevice.current.setValue(rotateOrientation.rawValue, forKey: "orientation")
  


在您的项目中添加上述类。

AppUtility.lockOrientation(.landscape, andRotateTo: .portrait)

【讨论】:

以上是关于在“Swift3”中可编程设置方向的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS 7中以编程方式设置设备方向?

Swift 3:UITextView - 动态高度 - 以编程方式

如何以编程方式设置 UWP 应用的方向

以编程方式设置允许的方向

在swift3中按下按钮时如何以编程方式执行segue或呈现视图

swift ios 以编程方式设置 PageViewController 的过渡样式和方向