我正在学习用Xcode编程视图,而不是使用.storyboard
。
我不希望视图旋转。
到目前为止,我有这个。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.backgroundColor = .white
let imageView = UIImageView(image: #imageLiteral(resourceName: "facebook_logo.png"))
view.addSubview(imageView)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
imageView.topAnchor.constraint(equalTo: view.topAnchor, constant: 300).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 100).isActive = true
imageView.heightAnchor.constraint(equalToConstant: 100).isActive = true
}
答案 0 :(得分:1)
我认为上面@oaccamsrazer提供的链接是您所需要的。为了提供帮助,我实现了一个小示例项目。您可以看到此项目:HERE(此处:https://github.com/stevencurtis/RotateViews)
有两个视图控制器,由一个segue链接(都包装在UINavigationController中)。
在AppDelegate中,您需要以下内容:
var restrictRotation:UIInterfaceOrientationMask = .all
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask
{
return self.restrictRotation
}
还有viewWillAppear(因为遍历堆栈时会调用它,因此比使用viewDidLoad更好)
override func viewWillAppear(_ animated: Bool) {
(UIApplication.shared.delegate as! AppDelegate).restrictRotation = .all
}
在viewDidLoad中(您也可以使用viewWillAppear)
override func viewDidLoad() {
super.viewDidLoad()
(UIApplication.shared.delegate as! AppDelegate).restrictRotation = .portrait
}
仅使用情节提要或代码没有区别,实现仍将相同。