2016-08-11 4 views
0

Я использую жест Пинча, чтобы уменьшить изображение. Теперь я могу установить предел, что до этого предела он не позволит пользователю уменьшать масштаб. Для этого я использую код ниже.Жест Ограничение привязки для жесты щепотка IOS

func handlePinch(recognizer : UIPinchGestureRecognizer) 
    { 
     imageView.transform = CGAffineTransformScale(imageView.transform, 
                 recognizer.scale, recognizer.scale) 

     recognizer.scale = 1.0 
} 

ответ

-2

Там нет прямого способа ограничить масштабы UIPinchGestureRecogniser. Но вы можете попробовать технику, описанную здесь:

Max/Min Scale of Pinch Zoom in UIPinchGestureRecognizer - iPhone iOS

+0

Я ве установлено, что возможно – JAck

+0

Хотите ли вы поделиться вашей стратегии? –

0
(void)handlePinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer { 

    if([gestureRecognizer state] == UIGestureRecognizerStateBegan) { 
     // Reset the last scale, necessary if there are multiple objects with different scales 
     lastScale = [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 - (lastScale - [gestureRecognizer scale]); 
     newScale = MIN(newScale, kMaxScale/currentScale); 
     newScale = MAX(newScale, kMinScale/currentScale); 
     CGAffineTransform transform = CGAffineTransformScale([[gestureRecognizer view] transform], newScale, newScale); 
     [gestureRecognizer view].transform = transform; 

     lastScale = [gestureRecognizer scale]; // Store the previous scale factor for the next pinch gesture call 
    } 
}