gpt4 book ai didi

iphone - 如何使用 UIPinchGestureRecognizer 设置最小和最大缩放比例

转载 作者:太空狗 更新时间:2023-10-30 03:47:02 32 4
gpt4 key购买 nike

我想放大和缩小 ImageView ,但我不想为此使用 UIScrollView。所以为此我使用了 UIPinchGestureRecognizer,这是我的代码 -

[recognizer view].transform = CGAffineTransformScale([[recognizer view] transform], [recognizer scale], [recognizer scale]);
recognizer.scale = 1;

这对于放大和缩小效果很好。但问题是我想像在 UIScrollView 中一样以特定比例放大和缩小,我们可以设置 maxZoom 和 minZoom。我找不到任何解决方案,关于 UIPinchGestureRecognizer 的每个教程都只描述相同的代码。

最佳答案

在处理手势的类的接口(interface)中声明 2 个 ivars CGFloat __scaleCGFloat __previousScale。通过覆盖 init 函数之一将 __scale 设置为 1.0(确保在此处调用 super 构造函数)。

- (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);
}
}

关于iphone - 如何使用 UIPinchGestureRecognizer 设置最小和最大缩放比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10958624/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com