我有一個應用多個變換到UIView的問題。例如,當我圍繞UIView的中心點旋轉一個旋轉角度,然後嘗試圍繞位於其之外的邊界點旋轉它時,第二個動畫就會全部混亂,例如,它會以與指定完全不同的方式抖動或旋轉。我該如何做到這一點,以便第一個動畫不會影響第二個動畫,但在第二個動畫播放時仍然存在?順序UIView變換
編輯:這是代碼。首先,我將視圖旋轉圍繞它的中心點:
CALayer *layer = view.layer;
CATransform3D aTransform = CATransform3DIdentity;
CGFloat zDistance = 2000;
aTransform.m34 = 1.0/-zDistance;
scrollView.layer.sublayerTransform = aTransform;
CGFloat subviewX = 0.5;
CGFloat subviewY = 0.5;
[self setAnchorPoint:CGPointMake(subviewX, subviewY) forView:view];
CATransform3D bTransform = CATransform3DIdentity;
CABasicAnimation *rotateAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
rotateAnim.fromValue= [NSValue valueWithCATransform3D:bTransform];
bTransform = CATransform3DRotate(aTransform,-20*M_PI/180, 1, 1, 0);
rotateAnim.duration=0.05;
rotateAnim.toValue=[NSValue valueWithCATransform3D:bTransform];
layer.transform = bTransform;
[layer addAnimation:rotateAnim forKey:nil];
現在,該層的旋轉,我想甩掉它周圍的屏幕左側邊框:
CALayer *layer = view.layer;
CATransform3D aTransform = CATransform3DIdentity;
CGFloat zDistance = 2000;
aTransform.m34 = 1.0/-zDistance;
tileScrollView.layer.sublayerTransform = aTransform;
CGFloat subviewX = ((1/view.frame.size.width)*(view.frame.origin.x));
CGFloat subviewY = 0.5;
[self setAnchorPoint:CGPointMake(-subviewX, subviewY) forView:view];
CATransform3D bTransform = layer.transform;
CABasicAnimation *rotateAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
rotateAnim.fromValue= [NSValue valueWithCATransform3D:bTransform];
bTransform = CATransform3DMakeRotation(-M_PI_2, 0, 1, 0);
rotateAnim.duration=0.2;
rotateAnim.toValue=[NSValue valueWithCATransform3D:bTransform];
layer.transform = bTransform;
[layer addAnimation:rotateAnim forKey:nil];
因爲我想旋轉層是翻轉,我把CATransform3D bTransform = layer.transform
而不是CATransform3D bTransform = CATransform3DIdentity
在第二個動畫的開始,但再次,只有混亂動畫
另一個類似的問題,我有一個UIView包含9個子視圖,其中之一翻轉翱翔d每秒都是中心點。但是每次我對這9個UIViews的superView應用一個轉換時,子視圖的佈局就會變得混亂。有誰知道如何防止這種情況?任何幫助將不勝感激。提前致謝!
向我們顯示代碼。 –
有很多方法可以對視圖進行動畫處理,所以如果不向我們展示我們不知道您在做什麼。 –