旋转时未调用我的UIView子类的方法traitCollectionDidChange(_ previousTraitCollection:UITraitCollection?)

时间:2014-11-27 16:02:01

标签: ios

UITraitEnvironment的文件说:

  

当前特征集合时会自动调用此方法   变化。覆盖此方法为您提供了一种自定义方法   与视图关联的特征集合发生更改时的行为。   如果不重写此方法,则不会执行任何特殊操作。

但是当我旋转模拟器时,我的UIView子类中的这个方法不会被调用。

1 个答案:

答案 0 :(得分:3)

单独的UIView从未能够响应轮换变化。您需要从其包含的视图控制器重新配置当前方向/大小的视图。

如果你在iPad上,即使在iOS 8上,特征收集也不会因轮换而改变;你仍然会在H:Regular,V:Regular。 您将要覆盖:

func viewWillTransitionToSize(_ size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)

响应视图控制器因旋转而改变的大小。 (一定要打电话给超级!)

你可以认可"方向"通过比较大小的宽度和高度来控制视图控制器(尽管现代iOS编程会鼓励你不要考虑方向):

let isPortrait = size.height > size.width