The*_*ger 5 iphone objective-c ios5 uipinchgesturerecognizer
我想放大并缩小图像视图,我不想使用UIScrollView.所以为此我使用了UIPinchGestureRecognizer,这是我的代码 -
[recognizer view].transform = CGAffineTransformScale([[recognizer view] transform], [recognizer scale], [recognizer scale]);
recognizer.scale = 1;
Run Code Online (Sandbox Code Playgroud)
这适用于放大和缩小.但问题是我想放大和缩小特定比例,如在UIScrollView中我们可以设置maxZoom和minZoom.我找不到任何解决方案,每个关于UIPinchGestureRecognizer的教程都只描述相同的代码.
nha*_*tdh 14
声明2个ivars CGFloat __scale并CGFloat __previousScale在处理手势的类的接口中.设置__scale为1.0覆盖其中一个init函数(确保在此处调用超级构造函数).
- (void)zoom:(UIPinchGestureRecognizer *)gesture {
NSLog(@"Scale: %f", [gesture scale]);
if ([gesture state] == UIGestureRecognizerStateBegan) {
__previousScale = __scale;
}
CGFloat currentScale = MAX(MIN([gesture scale] * __scale, MAX_SCALE), MIN_SCALE);
CGFloat scaleStep = currentScale / __previousScale;
[self.view setTransform: CGAffineTransformScale(self.view.transform, scaleStep, scaleStep)];
__previousScale = currentScale;
if ([gesture state] == UIGestureRecognizerStateEnded ||
[gesture state] == UIGestureRecognizerStateCancelled ||
[gesture state] == UIGestureRecognizerStateFailed) {
// Gesture can fail (or cancelled?) when the notification and the object is dragged simultaneously
__scale = currentScale;
NSLog(@"Final scale: %f", __scale);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8469 次 |
| 最近记录: |