我(希望)观看了所有相关的WWDC2014会话视频并阅读了文档,所以这个问题主要是为了证实我的怀疑,但请教育我。
我想要做的是使用自动布局动画视图。这本身不是问题。但这些动画'端点随着方向的不同而变化。我认为我可以使用大小类在轮换时自动移动视图,但Apple的开发人员指南说动画必须以编程方式完成,而且从我可以收集的内容来看,大小类是Interface-Builder-唯一的事情。
我的另一个想法是使用IB提供的顶部/底部自定义布局指南,但这些指南似乎是硬编码的。
我能做的最后一件事是在听完旋转事件后手动更新约束,但这并不是什么新鲜事,我觉得大小类应该不仅仅用于静态接口。我是否过高估计了他们的目的?
TLDR:鉴于视图可以有两个点A和B(由于动画),如何使用大小类或类似的东西移动两个点?
答案 0 :(得分:22)
在对文档进行了一些挖掘之后,我终于发现了一些可用的东西。 UIContentContainer
协议定义willTransitionToTraitCollection(:withTransitionCoordinator:)
,该方法的第一个参数(UITraitCollection
)包含水平和垂直大小类以及UIUserInterfaceIdiom
(可用于了解是否该应用程序在iPhone或iPad上运行,但大多数情况下应使用大小类。)
此外,由于iOS 8在横向视图中隐藏了状态栏,因此traitCollectionDidChange(previousTraitCollection:)
是在更改发生后调用的相应方法,因此调用此方法时UIApplication.sharedApplication().statusBarHidden
的值已更改。例如,对UIScrollView
的{{1}}非常有用。
最后,如果您需要确切的屏幕尺寸(当然,以点为单位,但上面提到的特征集合也知道像素密度),有contentInset
。
希望这也有助于其他人。