2012-05-27 102 views
1

我有一個使用CABasicAnimation旋轉的UIView的子類。我也希望這個旋轉的視圖被用戶觸動以觸發某些事件。不過,我發現將旋轉應用於我的觀點似乎弄亂了我的觀點的可觸摸區域。視圖在旋轉後正確顯示,但似乎只有一半視圖可觸摸。 touchesBegan方法不會在部分視圖上觸發,即使觸摸清晰地顯示在視圖上。是否有什麼我需要做的,以糾正一個視圖的框架後,它已被旋轉,以便它可以正常交互?IOS CABasicAnimation旋轉和觸摸框架

這是我的輪換代碼:

CABasicAnimation *fullRotation; 
fullRotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
fullRotation.fromValue = [NSNumber numberWithFloat:0]; 
fullRotation.toValue = [NSNumber numberWithFloat:angle]; 
fullRotation.duration = 0.0; 
fullRotation.removedOnCompletion = FALSE; 
fullRotation.autoreverses = NO; 
fullRotation.fillMode = kCAFillModeForwards; 
fullRotation.repeatCount = 0; 
[self.layer addAnimation:fullRotation forKey:@"rotation"]; 

從做了幾個NSLogs我的確可以看到視圖的框架儘管觀點看起來視覺上不同的動畫添加之後不被修改。

回答

1

我結束了剛剛使用CGAffineTransform做我的輪換。只要一旦應用旋轉就不要修改框架,如果需要移動視圖,則應該使用view.center而不是view.frame。

CGAffineTransform transformRotate = CGAffineTransformMakeRotation(angle); 
self.transform = transformRotate;