將變換添加到myView中時,您不是將變換應用於現有變換狀態,而是覆蓋變換。這意味着當你第二次設置transform = CGAffineTransformMakeRotation(M_PI/2)時,你根本沒有改變轉換。
編輯: 正如羅布所指出的,當旋轉值已存儲在變換中時,不需要使用屬性rotationInRadians。相反,你可以簡單地修改現有的變換是這樣的:
[UIView animateWithDuration:0.2 animations:^{
_myView.transform = CGAffineTransformRotate(_myView.transform, M_PI/2);
}];
下面是一個不理想的解決方案,我以前提出。
您將需要一個跟蹤您的旋轉的變量。每次旋轉時,您將按照您希望的數量遞增該變量,然後根據變量的新值創建新的變換。
使屬性做到這一點:
@property (nonatomic, assign) CGFloat rotationInRadians;
它在你的init方法初始化爲0。然後修改您的rotateView方法以增加rotationInRadians並應用新的變換。
- (IBAction)rotateView:(id)sender {
self.rotationInRadians += M_PI/2;
[UIView animateWithDuration:0.2 animations:^{
_myView.transform = CGAffineTransformMakeRotation(self.rotationInRadians);
}];
}
驚人!非常感謝。 – 2014-10-05 01:43:06
當視圖已經在視圖的變換中時,沒有理由跟蹤單獨變量中的旋轉。 – 2014-10-05 01:55:19
好點。我看不出將它存儲在外部變量中的好處。我會說羅布的答案更簡單,更正確。 – dfmuir 2014-10-05 01:58:49