我在我的應用程序中實現了拖放/調整大小/旋轉標籤。到目前爲止,除了UIRotationGestureRecognizer
手勢之外,所有內容都正在工作。更具體地說,它不適用於UIPinchGestureRecognizer
手勢。iPhone iOS如何讓UIRotationGestureRecognizer和UIPinchGestureRecognizer一起工作來縮放和旋轉帶有子視圖的UIView?
通常兩個手勢競爭兩個手指觸摸,所以我正在並行運行它們。以下是手勢識別器調用的2種方法。
當做旋轉手勢,視圖圍繞它的中心旋轉,它的高度和寬度變化如下:高度變成寬度,寬度慢慢變成高度。最終,視圖消失。
在視圖中,我有另一個自動調整大小的視圖。通常,捏合手勢也會自動調整子視圖的大小,但在這種情況下,自動調整遮罩的子視圖消失。子視圖有高度和寬度的彈簧和左/頂撐杆。
我在做什麼錯?我怎樣才能用手勢調整和縮放UIView?
所有委託方法和連接都正確設置。 我需要了解如何處理識別器應用縮放和旋轉的順序。
//makes 2 gesture recognizers behave together
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
- (IBAction)handleRotationFrom:(id)sender {
NSLog(@"Gesture rotation %.1f", rotationGestureRecognizer.rotation);
//attempt to continuously rotate the label, starting with a remembered rotation
float rotation = atan2(activeCompanionLabelView.transform.b, activeCompanionLabelView.transform.a);
NSLog(@"existing rotation %.1f", rotation);
// rotation = rotation<0?(2*M_PI)-fabs(rotation):rotation;
rotation +=rotationGestureRecognizer.rotation;
NSLog(@"*** gesture rotation %.1f sum: %.1f, saved: %.1f",rotationGestureRecognizer.rotation, rotation, activeCompanionLabelView.savedRotation);
activeCompanionLabelView.transform = CGAffineTransformMakeRotation((rotation));
activeCompanionLabelView.savedRotation = rotation;
}
- (IBAction)handlePinch:(id)sender {
NSLog(@"pinch %.2f", pinchGestureRecognizer.scale);
//resize, keeping the origin where it was before
activeCompanionLabelView.frame = CGRectMake(activeLabelContainerFrame.origin.x, activeLabelContainerFrame.origin.y, activeLabelContainerFrame.size.width*pinchGestureRecognizer.scale, activeLabelContainerFrame.size.height*pinchGestureRecognizer.scale);
}
我已經有這個代碼到位。我用這個信息澄清了這個問題。 – 2012-03-17 17:15:37
@AlexStone:我明白了。我現在不在我的Mac上,但需要對此進行一些測試。如果沒有人出面,我可以明天表達我的答案。 – 2012-03-17 17:19:19
我現在有同樣的概率..你有解決這個問題嗎? – Prathiba 2012-06-12 08:46:34