ViewWillTransitionToSize 在 Swift 3 中出现故障?

Posted

技术标签:

【中文标题】ViewWillTransitionToSize 在 Swift 3 中出现故障?【英文标题】:ViewWillTransitionToSize broke in Swift 3? 【发布时间】:2016-09-26 14:52:01 【问题描述】:

当我旋转设备时,我正在使用 viewWillTransitionToSize 来调整我的滑出菜单,但是它似乎在 Swift 3 中被破坏了?谁能帮我解决这个问题?我的代码如下所示:

func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) 
        super.viewWillTransition(to: size, with: coordinator)
        coordinator.animate(alongsideTransition: nil, completion: 
            _ in

            let controller = self.revealViewController().rightViewController

            var frame = controller?.view.frame
            frame?.size.height = UIScreen.main.bounds.size.height - self.navigationController!.navigationBar.frame.size.height - self.toolBar.frame.size.height - (UIApplication.shared.isStatusBarHidden ? 0 : 20)
            controller?.view.frame = frame!
        )
    

旋转设备时好像没有调用它?

【问题讨论】:

【参考方案1】:

找出问题所在,迁移到 swift 3 所做的更改不正确,函数应如下所示:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) 
        super.viewWillTransition(to: size, with: coordinator)
        coordinator.animate(alongsideTransition: nil, completion: 
            _ in

            let controller = self.revealViewController().rightViewController

            var frame = controller?.view.frame
            frame?.size.height = UIScreen.main.bounds.size.height - self.navigationController!.navigationBar.frame.size.height - self.toolBar.frame.size.height - (UIApplication.shared.isStatusBarHidden ? 0 : 20)
            controller?.view.frame = frame!
        )

    

【讨论】:

为了将来参考,我说得对吗?唯一改变的是 override 关键字? @zneak 注意方法签名的变化。 API声明历史:func viewWillTransitionToSize(_ size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) viewWillTransition 以相反的方式工作。当设备旋转到横向时,它显示为纵向。是只有我,还是其他人有过这种经历? ***.com/questions/44632424/…

以上是关于ViewWillTransitionToSize 在 Swift 3 中出现故障?的主要内容,如果未能解决你的问题,请参考以下文章

viewWillTransitionToSize:withTransitionCoordinator: 未调用

为啥 `viewWillTransitionToSize` 中检索 SafeAreaInsets 的逻辑略有错误?

ViewWillTransitionToSize 在 Swift 3 中出现故障?

viewWillTransitionToSize 返回 iPhone 12 pro max 的错误尺寸 [重复]

viewWillTransitionToSize:withTransitionCoordinator: 和 layoutSubviews: 之间的交互

Swift viewWillTransitionToSize 不使用分屏调用