我在屏幕上有4个UIViews,另一个坐在那些响应滑动手势的顶部。我使用动画块将顶部UIvew(以黄色突出显示)移动到屏幕左侧。当我然后将其他UIViews之一调整为全屏时,顶部的UIView恼人地回归到它的原始位置。就我所见,代码中没有任何内容可以实现这一点。
这是不受欢迎的影响:
之前幻灯片:
在调整大小之前:
调整大小后:
幻灯片代码:
[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];
}
];
答案 0 :(得分:0)
在进行调整大小之前,在黄色UIView中的setFrame:
中设置断点。然后你可以看到谁在调用它并推断出原因。
也许黄色视图最初是通过自动布局约束来定位的?
您正在通过更改其框架来移动黄色视图,但如果存在将其定位在中间的自动布局约束,则下次自动布局重新计算布局时,它会将其移回。您通常需要在移动(滑动)视图时更改自动布局约束,而不是更改其框架。