首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?)在旋转时未调用我的UIView子类

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

Stack Overflow用户
提问于 2014-11-27 16:02:01
回答 1查看 1.8K关注 0票数 2

UITraitEnvironment的文件说:

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

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

EN

回答 1

Stack Overflow用户

发布于 2015-08-19 00:06:29

只有UIView才能对旋转变化做出响应。您需要从其包含的视图控制器中重新配置当前方向/大小的视图。

如果你在iPad上,甚至在iOS 8上,特征集合不会因为旋转而改变;你仍然在H:正则,V:正则。您将需要重写:

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

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

您可以通过比较大小的宽度与高度来推测视图控制器的“方向”(尽管现代iOS编程会鼓励您停止在方向方面的思考):

let isPortrait = size.height > size.width

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27174666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档