我正在旋轉使用Core Animation來響應UISwipeGesture的UIView子類對象。使用Core Animation和塊旋轉UIView對象問題
描述上下文:我有一個圓形錶盤,我已經在CG中繪製並添加到主視圖中作爲子視圖。 爲了響應滑動手勢,我正在指示它在任一方向上旋轉15度,具體取決於滑動手勢是向左還是向右滑動。
問題,它只會一次旋轉。隨後的手勢被識別(從觸發的其他動作中可以看出),但動畫不會重複。我可以一次往後走一次。但試圖在任何方向多次都行不通。下面是相關的代碼,讓我知道你的想法...
- (IBAction)handleLeftSwipe:(UISwipeGestureRecognizer *)sender
{
if ([control1 pointInside:[sender locationInView:control1] withEvent:nil])
{
//updates the display value
testDisplay.displayValue = testDisplay.displayValue + 0.1;
[testDisplay setNeedsDisplay];
//rotates the dial
[UIView animateWithDuration:0.25 animations:^{
CGAffineTransform xform = CGAffineTransformMakeRotation(radians(+15));
control1.transform = xform;
[control1 setNeedsDisplay];
}];
}
我打算查看下面的答案,但只是爲了讓事情更加複雜...... UIView撥號盤有陰影。旋轉視圖也會旋轉陰影。我想我需要一種方法將CTM(變換矩陣)上的位置恢復15度並重新繪製以避免陰影問題?我不知道如何在視圖的drawRect方法之外設置CTM的改變。我無法在視圖控制器中引用視圖的圖形上下文。我認爲。我可能是錯的... – Cocoadelica
那麼你想旋轉撥號而不是影子?錶盤和陰影在同一視圖中嗎?對這兩個問題都回答爲「 – Kaiser
」。我可以在錶盤下面放置另一個視圖,使其隱藏起來,除了陰影以外,還使用我們討論的計數器方法。它只是我不能相信沒有什麼方法可以重置變換矩陣。我已經通過文檔,但無法看到任何東西。也許這只是我需要接受的東西。 – Cocoadelica