我想添加一個UIView的一個過渡式的縮放動畫這樣的:得到一個UIView的幀一縮放動畫
^
|
<---.--->
|
v
觀看開始一點點框架(centerParent.x,centerParent.y, 20,20),然後切換到(centerParent.x,centerParent.y,300,300)。
但是,當我改變框架,我必須改變它,因爲視圖的位置(0.0),而不是它的中心點。有誰知道該怎麼做?
感謝
我想添加一個UIView的一個過渡式的縮放動畫這樣的:得到一個UIView的幀一縮放動畫
^
|
<---.--->
|
v
觀看開始一點點框架(centerParent.x,centerParent.y, 20,20),然後切換到(centerParent.x,centerParent.y,300,300)。
但是,當我改變框架,我必須改變它,因爲視圖的位置(0.0),而不是它的中心點。有誰知道該怎麼做?
感謝
隨着您目前使用(不使用變換而只是調整視圖)的方法,你只需要重置原點或視圖的中心)。最簡單的是中心:
view.frame = CGRectMake(0, 0, 20, 20);
CGPoint center = view.center;
[UIView animateWithDuration: 1.0f animations:^{
view.frame = CGRectMake(0, 0, 300, 300);
view.center = center;
}];
您還可以通過移動減去1/2來自x和y尺寸變化的差異復位的來源,但這更多的數學:
view.frame = CGRectMake(0, 0, 20, 20);
CGPoint origin = view.frame.origin.
[UIView animateWithDuration: 1.0f animations:^{
origin.x -= (300 - 20)/2;
origin.y -= (300 - 20)/2;
view.frame = CGRectMake(origin.x, origin.y, 300, 300);
}];
可能
我使用第二種解決方案。沒有重新縮放工作正常!謝謝:) – damacri86
@Aaron Hayman - 你能告訴我如何用動畫縮小視圖。提前致謝。 –
@PankajGupta你只需要使用與我在答案中描述的相同的數學。基本上,取出原點並減去新尺寸和舊尺寸之間差異的一半。將視圖框設置爲動畫塊內的新原點+大小。 –
爲了使視圖縮小,同時保持它自己的中心是容易的,但你需要使用轉換。這裏是一個代碼。 只需添加並連接一個視圖,將其命名爲zoomerView。
在這個例子中,我只是把這個添加到主視圖觸動結束。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint center = zoomerView.center;
[UIView animateWithDuration:1 animations:^{
zoomerView.transform = CGAffineTransformScale(zoomerView.transform, 1.2, 1.2);
}];
}
希望這有助於你
謝謝你的答案,但我使用設置框架,因爲我需要一個很好的決議。 – damacri86
你PLZ描述你的動畫?該圖很難讓我們理解。 –
我試着更好地解釋它:) – damacri86
也許你可以將它嵌入到UIScrollView中,並使用方法zoomToRect:animated:來獲得相同的效果。 –