当另一个UIView为其框架设置动画时,UIView重新定位

时间:2015-02-09 13:37:12

标签: ios objective-c core-animation

我在屏幕上有4个UIViews,另一个坐在那些响应滑动手势的顶部。我使用动画块将顶部UIvew(以黄色突出显示)移动到屏幕左侧。当我然后将其他UIViews之一调整为全屏时,顶部的UIView恼人地回归到它的原始位置。就我所见,代码中没有任何内容可以实现这一点。

这是不受欢迎的影响:

之前幻灯片:

enter image description here

在调整大小之前:

enter image description here

调整大小后:

enter image description here

幻灯片代码:

[UIView animateWithDuration:0.3f
                          delay:0.0f
                        options:        (UIViewAnimationOptionAllowAnimatedContent | UIViewAnimationOptionCurveEaseInOut)
                     animations:^{
                         _swipeView.frame = CGRectMake(_swipeView.frame.origin.x - 327, _swipeView.frame.origin.y, _swipeView.frame.size.width , _swipeView.frame.size.height);

                     }
                     completion:^(BOOL finished) {

                         ;}

调整代码大小:

[UIView animateWithDuration:0.3
                     animations:^{
                         _Quad2.frame = fullScreenRect;;}
                     completion:^(BOOL finished){

                         [self singleViewTrasitionComplete:_Quad2];
                     }
     ];

StoryBoard

1 个答案:

答案 0 :(得分:0)

在进行调整大小之前,在黄色UIView中的setFrame:中设置断点。然后你可以看到谁在调用它并推断出原因。

也许黄色视图最初是通过自动布局约束来定位的?

您正在通过更改其框架来移动黄色视图,但如果存在将其定位在中间的自动布局约束,则下次自动布局重新计算布局时,它会将其移回。您通常需要在移动(滑动)视图时更改自动布局约束,而不是更改其框架。