14

我(希望)观看了所有相关的 WWDC2014 会议视频并阅读了文档,所以这个问题主要是为了证实我的怀疑,但请教育我。

我想做的是使用自动布局为视图设置动画。这本身不是问题。但是这些动画的端点会随着不同的方向而变化。我以为我可以使用尺寸类在旋转时自动移动视图,但 Apple 的开发人员指南说动画必须以编程方式完成,并且据我所知,尺寸类是 Interface-Builder-only 的东西。

我的另一个想法是使用自定义布局指南,例如 IB 提供的顶部/底部指南,但这些似乎是硬编码的。

我能做的最后一件事是在听到旋转事件后手动更新约束,但这并不是什么新鲜事,而且我觉得尺寸类应该不仅仅可用于静态接口。我高估了他们的目的吗?

TLDR:给定两个点 A 和 B,一个视图可以有其原点(由于动画),我如何使用大小类或类似的东西移动这两个点?

4

1 回答 1

22

在对文档进行了更多挖掘之后,我终于找到了一些有用的东西。UIContentContainer协议定义了,并且该willTransitionToTraitCollection(:withTransitionCoordinator:)方法的第一个参数 (a UITraitCollection) 包含水平和垂直尺寸类以及 a UIUserInterfaceIdiom(可用于了解应用程序是在 iPhone 还是 iPad 上运行,尽管大多数情况下都应使用尺寸类) .

另外,由于iOS 8在横向视图中隐藏了状态栏,traitCollectionDidChange(previousTraitCollection:)是在发生变化后被调用的对应方法,所以UIApplication.sharedApplication().statusBarHidden调用该方法时的值发生了变化。例如对UIScrollView's很有用。contentInset

最后,如果您需要精确的屏幕尺寸(当然,以磅为单位,但上述特征集合也知道像素密度),有viewWillTransitionToSize(:withTransitionCoordinator:).

希望这对其他人也有帮助。

于 2014-08-25T20:19:10.360 回答