根據可用的Apple文檔here,可以動畫UIView的bounds
屬性。動畫UIView的邊界屬性
爲了編程旋轉自己的看法(在這種情況下,從縱向到橫向)之一,我實現了下面的代碼:
float w = controlsView.bounds.size.width;
float h = controlsView.bounds.size.height;
CGAffineTransform T = CGAffineTransformMakeRotation(M_PI/2);
UIViewContentMode oldContentMode = controlsView.contentMode;
controlsView.contentMode = UIViewContentModeRedraw;
[UIView animateWithDuration:1.0 animations:^{
controlsView.bounds = CGRectMake(0, 0, h, w);
controlsView.transform = T;
}];
controlsView.contentMode = oldContentMode;
我加了兩條指令爲contentMode
,因爲我已經在計算器上的某個地方閱讀必須將contentMode
設置爲該值,以便UIView在修改bounds
屬性時重繪內容(但在這種情況下,它不會以任何方式影響行爲)。
該代碼的問題是,UIView沒有動畫調整大小,但一次。
執行該代碼,首先調整UIView的大小(沒有動畫),然後用動畫旋轉。
如何爲調整大小設置動畫效果?
- 更新 -
我試圖縮放和旋轉改造結合起來。 UIView在動畫中旋轉和縮放,但最後它的bounds
屬性不會改變:即使它已經旋轉到橫向(我的iPhone應該是568x320),其寬度和高度仍然保持縱向值( 320x568)。事實上,controlsView
上的UI控件變形(錯誤的寬高比)並顯得拉長。
爲什麼不使用縮放和旋轉變換? – Wain