如果没有开发人员互动,您可以让视图调整大小以支持方向,在许多情况下这很好,但如果您需要更改UI对象的布局以更好地适应新方向,该怎么办?
beginGeneratingDeviceOrientationNotifications
在面值处,如果布局包含多个UITextField,则更改方向会清除字段(从用户的角度来看),这表明通知事件方法中还需要字段复制方法。 除非有自动配置吗? (或另类模式)
但是如果你想要一些很好的短延迟UI帧翻译动画呢?
或者,我没有使用两个View控制器,而是使用CGAffineTransforms
来动画UI对象框架更改(在willRotateToInterfaceOrientation
上触发),并增加了看起来很性感,但代码看起来并不是很好优雅。
我不知道任何其他解决方案。
要明白这一点:在方向事件上更改UI对象布局的最有效,最快捷的方法是什么,最好是方便框架翻译动画?
答案 0 :(得分:2)
最有效的方法是在代码中进行布局。缺点是你必须编写丑陋的代码并避免IB。结果是弹性和性能。我在我的视图控制器中编写了一个方法,它接受UIInterfaceOrientation作为参数并相应地布局其视图。然后我从-willAnimateRotationToInterfaceOrientation调用此方法:duration:。当然,代码非常难看,但速度很快。基本上,我只是在那里设置了一堆帧属性。
答案 1 :(得分:1)
变换最容易与过渡动画集成。
我通常通过为每个方向使用不同的视图/视图 - 控制器对来解决此问题。使这项工作无缝工作的诀窍是让已经输入的数据在外部数据模型对象中不断更新。然后,每个视图控制器自动从数据模型填充其视图的UI。这样您就不必担心在视图控制器之间移动数据,如果您有很多视图,这些数据可能会变得混乱。