1
我試圖在iPad視圖上同時創建典型的捏縮放和平移。該視圖本身包含4個其他子視圖。 我遇到的問題是,雖然我可以同時捏住縮放和平移,但平移會超出範圍,以至於您可以將視圖移出框架。限制使用UIPinchGestureRecognizer捏UIPanGestureRecognizer,對於iPad
我試過幾個鍋侷限性,但他們似乎都只有兩種Y軸,或X和Y,但只有在不放大的情況下限制。
有什麼建議?
下面是我用什麼都捏縮放和泛手勢:
// for Pan Gesture
- (void) handlePanGestures:(UIPanGestureRecognizer *)recognizer
{
if (recognizer.state != UIGestureRecognizerStateEnded && recognizer.state != UIGestureRecognizerStateFailed)
{
CGPoint translation = [recognizer translationInView:self.view];
CGPoint finalPoint = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);
CGPoint location = [recognizer locationInView:recognizer.view.superview];
recognizer.view.center = location;
// set final position
recognizer.view.center = finalPoint;
[recognizer setTranslation:CGPointZero inView:self.view];
}
}
// for Pinch Gesture
- (void)handlePinches:(UIPinchGestureRecognizer *)gestureRecognizer
{
if([gestureRecognizer state] == UIGestureRecognizerStateBegan)
{
// Reset the last scale, necessary if there are multiple objects with different scales
self.currentScale = [gestureRecognizer scale];
}
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan ||
[gestureRecognizer state] == UIGestureRecognizerStateChanged)
{
CGFloat currentScale = [[[gestureRecognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];
// Constants to adjust the max/min values of zoom
const CGFloat kMaxScale = 2.0;
const CGFloat kMinScale = 1.0;
CGFloat newScale = 1 - (self.currentScale - [gestureRecognizer scale]);
newScale = MIN(newScale, kMaxScale/currentScale);
newScale = MAX(newScale, kMinScale/currentScale);
CGAffineTransform transform = CGAffineTransformScale([[gestureRecognizer view] transform], newScale, newScale);
[gestureRecognizer view].transform = transform;
self.currentScale = [gestureRecognizer scale]; // Store the previous scale factor for the next pinch gesture call
}
}
您是否獲得這方面的任何解決方案? – Abha