2011-12-12 81 views
5

我正在使用UIView动画来调整和翻译包含多个子视图的视图。父视图的动画完美地发生;然而,子视图表现出奇怪的行为。动画开始时,子视图会立即调整大小,然后移至其最终位置。UIView调整大小和翻译动画不会正确动画子视图

例如,如果动画的持续时间和延迟为五秒,则只要动画被调用,子视图就会移动到所需的动画结束值。五秒后,超级视图将被调整大小并翻译成所需的内容。

我对动画代码是:

[UIView animateWithDuration:0.5 animations:^{ 
    if (UIDeviceOrientationIsLandscape(self.interfaceOrientation)) { 
     self.leftPaneView.frame = leftPaneLandscapeFrame; 
     self.rightPaneContainerView.frame = rightPaneLandscapeFrame; 
    } 
    if (UIDeviceOrientationIsPortrait(self.interfaceOrientation)) { 
     CGFloat offset = 300; 
     self.leftPaneView.frame = CGRectOffset(leftPanePortraitFrame, -offset, 0); 
     self.rightPaneContainerView.frame = rightPanePortraitFrame; 
    } 
}]; 

任何想法?

注意:rightPaneContainerView包含UIViewController的视图,该视图是调用此动画的视图控制器的子视图。

+1

我已经看到了你的代码,我无法重现您的问题。由于这只是一部较大的动画片,我想这个问题与整个事件序列有关。如果可以的话,分享更多的代码,并且可能会显示自己。 – GrimmRanger

+0

谢谢你看看内脏。跳转子视图的内容模式被设置为左侧,导致动画中令人不快的错误。我的一个业余错误。 – Eytan

回答

7

我设法解决了这个问题。某些视图的内容模式设置为“左”。当动画开始时,视图会跳到左边,然后被动画到所需的动画结束值。

一个业余的错误。感谢所有看过的人。

+0

好抓!很高兴你解决了这个问题,谢谢你发布你的解决方案! – GrimmRanger

+0

有同样的问题,谢谢。 – Anastasia

+0

那么你选择了哪个'contentMode'? – Colas