viewWillTransition不被称为Swift 4

时间:2019-01-16 00:07:10

标签: ios swift

我正在尝试检测iOS设备上的方向变化。我以为这样做很简单,但实际上却行不通...

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    print("Will Transition to size \(size) from super view size \(self.view.frame.size)")

    if (size.width > self.view.frame.size.width) {
        print("Landscape")
    } else {
        print("Portrait")
    }

    if (size.width != self.view.frame.size.width) {
        // Reload TableView to update cell's constraints.
        // Ensuring no dequeued cells have old constraints.

    }


}

上面是我在stackoverflow上找到的代码。 viewWillTransition没有被调用。我注意到帖子坚持要使它工作才能使用super,但是没有,因为您可以看到有一个super并且它仍然不起作用。

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
}

下一次修复它时,什么也没做。

帮助?

2 个答案:

答案 0 :(得分:0)

使用自定义容器视图? 如果您已将子viewController的视图作为子视图添加到父viewController的视图,则必须在父viewController上调用.addChild(_:)方法以在两个视图控制器之间创建父子关系。

答案 1 :(得分:-1)

我认为这会有所帮助:-

如果UIDevice.currentDevice()。orientation == UIDeviceOrientation.LandscapeLeft {

print(“ Anything”)

} 否则,如果UIDevice.currentDevice()。orientation == UIDeviceOrientation.LandscapeRight {

print(“ Anything”)

} 否则,如果UIDevice.currentDevice()。orientation == UIDeviceOrientation.UIDeviceOrientationPortraitUpsideDown {

print(“ Anything”)

} 否则,如果UIDevice.currentDevice()。orientation == UIDeviceOrientation.UIDeviceOrientationPortrait {

print(“ Anything”)

}