UITraitEnvironment的文件说:
当前特征集合时会自动调用此方法 变化。覆盖此方法为您提供了一种自定义方法 与视图关联的特征集合发生更改时的行为。 如果不重写此方法,则不会执行任何特殊操作。
但是当我旋转模拟器时,我的UIView子类中的这个方法不会被调用。
答案 0 :(得分:3)
单独的UIView从未能够响应轮换变化。您需要从其包含的视图控制器重新配置当前方向/大小的视图。
如果你在iPad上,即使在iOS 8上,特征收集也不会因轮换而改变;你仍然会在H:Regular,V:Regular。 您将要覆盖:
func viewWillTransitionToSize(_ size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
响应视图控制器因旋转而改变的大小。 (一定要打电话给超级!)
你可以认可"方向"通过比较大小的宽度和高度来控制视图控制器(尽管现代iOS编程会鼓励你不要考虑方向):
let isPortrait = size.height > size.width