2012-09-29 122 views
1

在子視圖的滑動動畫(向下,暫停,然後回到原始位置)期間,設備被旋轉,因此超級視圖被旋轉。我想保持subview的寬度與superview相同,所以我需要在滑動動畫中調整它的大小。如何在移動動畫中途調整視圖大小?

這裏是滑動動畫代碼:

[UIView animateWithDuration:0.3 animations:^{ 
    self.frame = finalFrame; 
} completion:^(BOOL finished) { 
    [UIView animateWithDuration:0.3 delay:3 options:0 animations:^{ 
     self.frame = initFrame; 
    } completion:^(BOOL finished) { 
     [self removeFromSuperview]; 
    }]; 
}]; 

這是當我檢測旋轉時調用的方法:

- (void)rotate:(NSNotification *)notif { 
    // What to do here to adjust the width but also keep the sliding animation going. 
} 

回答

1

似乎沒有自動調整大小的魔法可以在這裏使用。必須:

  1. 記錄動畫的進度。
  2. 檢測到旋轉時,取消舊的動畫,調整視圖大小,並從當前進度開始添加新的動畫。

以下是供參考的示例項目:http://d.pr/f/M4UW

0

可以動畫顯示層的bounds來改變寬度。只需使高度相同併爲邊界應用動畫即可。

如果您希望兩個動畫具有相同的持續時間,定時功能等,則可以將它們添加到動畫組中並將該組添加到您正在動畫的圖層。

+1

問題在於「調整大小」不是提前計劃的,它是由用戶旋轉設備觸發的。我必須處理滑動動畫的中途。我用代碼更新了這個問題。 – an0

相關問題