#iOS开发笔记#如何限制UIImageView放大缩小的比例

来源:互联网 发布:可以赚钱的网络兼职 编辑:程序博客网 时间:2024/04/28 11:43

当一个UIImageView实现了手势操作并可以用两指实现放大缩小之后,如何能限制放大缩小的比例?


(另:如何实现UIImageView的手势操作? -->  iOS UIImageView实现拖动,放大/缩小,旋转)


来源:

http://stackoverflow.com/a/5446348/2177332


代码实现:

@property CGFloat lastScale;

- (void)pinchGestureDetected:(UIPinchGestureRecognizer *)recognizer{        UIGestureRecognizerState state = [recognizer state];    if(state == UIGestureRecognizerStateBegan) {        // Reset the last scale, necessary if there are multiple objects with different scales        _lastScale = [recognizer scale];    }        if (state == UIGestureRecognizerStateBegan ||        state == UIGestureRecognizerStateChanged) {                CGFloat currentScale = [[[recognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];                // Constants to adjust the max/min values of zoom        const CGFloat kMaxScale = 3.0;        const CGFloat kMinScale = 1.0;                CGFloat newScale = 1 -  (_lastScale - [recognizer scale]);        newScale = MIN(newScale, kMaxScale / currentScale);        newScale = MAX(newScale, kMinScale / currentScale);        CGAffineTransform transform = CGAffineTransformScale([[recognizer view] transform], newScale, newScale);        [recognizer view].transform = transform;        _lastScale = [recognizer scale];  // Store the previous scale factor for the next pinch gesture call    }}

注:kMaxScale和kMinScale分别代表最大和最小的缩放比例。


0 0
原创粉丝点击