2015-02-09 73 views
0

我有4個UIViews在屏幕上,另一個坐在那些響應滑動手勢的頂部。我使用動畫塊將頂部UIvew(以黃色突出顯示)移動到屏幕左側。當我然後調整其他UIViews的其中一個全屏時,頂部的UIView惱人地回到它的原始位置。就我所知,代碼中沒有任何東西可以實現這一點。UIView當其他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

回答

0

你做大小調整就在,在黃色的UIView在setFrame:設置一個斷點。然後你可以看到誰在呼喚它並推斷出原因。

也許黃色視圖最初是由自動佈局約束來定位的?

您正在通過更改其框架來移動黃色視圖,但是如果存在將其置於中間的自動佈局約束,則下次自動佈局重新計算其佈局時會將其移回。移動(滑動)視圖時通常需要更改自動佈局約束,而不是更改其框架。