之前有人问similar question,但我很想知道iPhone SDK的自动旋转功能是否允许我们替换旋转动画与另一个过渡,例如淡入淡出。对于模态视图,我们可以设置modalTransitionStyle
但是没有自动旋转的这种属性。
如果我无法利用内置功能,我还能如何实现此功能?
答案 0 :(得分:0)
来自文档的willAnimateRotationToInterfaceOrientation:duration:
方法:
默认实现 这种方法什么也没做。如果你 重写此方法,你不应该 覆盖任何一个 willAnimateFirstHalfOfRotationToInterfaceOrientation:时间: 要么 willAnimateSecondHalfOfRotationFromInterfaceOrientation:时间: 方法
从内部调用此方法 用于旋转的动画块 风景。您可以覆盖此方法 并使用它来配置其他 应该在期间发生的动画 视图旋转。例如,你 可以用它来调整缩放级别 您的内容,更改滚动条 位置,或修改其他动画 视图的属性。
我想你可以在这里以及– willRotateToInterfaceOrientation:duration:
和– didRotateFromInterfaceOrientation:
之前和之后修改它。
这对我来说似乎效率低下并且低于标准,因为它实际上并没有取代过渡。
我会在UIView上创建一个类别,其中包括 - willRotateUsingTransition:
等方法,并传递一个参数,告诉它淡出,然后将视图的alpha设置为零。在每个子类中重写此选项以包括需要更改其alpha的任何子视图(如果适用)。在视图即将旋转时(使用上述方法)调用此方法,然后使用清理方法在将再次出现时恢复alpha。
修改:文档文档文档。再看一遍,我们再次展示了这种方法:- (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration
,我认为这种方法已被弃用。作为讨论的一部分,它包含了我之前从文档中发布的第二段中的文本。
答案 1 :(得分:0)
我通过将自动定位行为附加到隐藏视图并通过实现我自己的自定义效果来响应相关事件,从而实现了类似的功能。这是非常繁琐,我不记得所有的细节,但我确实设法完全控制行为。
但是,我应该说,在我的情况下,我想控制旋转的实现方式。我希望主要布局保持固定,同时旋转几个子视图。我想不出有一个很好的理由来完全用渐弱的替换来代替旋转;它只会让用户感到困惑,没有充分的理由。我可以想到使用淡入淡出效果的唯一原因是你想要换成一个截然不同的UI,但即使这样,也没有理由压制旋转效果。