gpt4 book ai didi

ios - 捏合和点击手势无法正常工作

转载 作者:行者123 更新时间:2023-11-29 12:57:46 28 4
gpt4 key购买 nike

我有一个 ImageView 到 ViewController,我想用捏合手势放大或缩小。另外,我想在用户双击图像时获得初始 View 。我遵循了本教程 Make Gallery

如果我只使用捏合手势,一切正常,我可以放大直到达到最大缩放,我可以缩小直到达到最小缩放。右边的结果如下图所示。  right result

虽然,如果我双击 ImageView,ImageView 将获得其初始格式(图 1),但无法识别最小缩放的成就,如果我继续使用捏合手势缩小,ImageView 将继续缩小,我得到这个结果(图 2):wrong result

这些是我处理事件的方法:

@interface ImageGalleryViewController (){


NSString *productName;
CGFloat previousScale;
CGFloat previousRotation;
CGFloat beginX;
CGFloat beginY;

CGFloat scale;
//CGFloat __previousScale;
}

- (void)viewDidLoad{
[super viewDidLoad];
// Do any additional setup after loading the view.

scale=1.0;

UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scaleImage:)];
[self.view addGestureRecognizer:pinchGesture];

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resetImage:)];
tapGesture.numberOfTapsRequired=2;
[self.view addGestureRecognizer:tapGesture];


}

- (void)resetImage:(UITapGestureRecognizer *)recognizer{
[UIView animateWithDuration:0.3 animations:^() {

self.view.transform = CGAffineTransformIdentity;

}];
self.bigImage.transform = CGAffineTransformIdentity;
[self.bigImage setCenter: CGPointMake(self.view.frame.size.width/2,self.view.frame.size.height/2+32)];
[UIView commitAnimations];
}

- (void)scaleImage:(UIPinchGestureRecognizer *)recognizer{

NSLog(@"Scale: %f", [recognizer scale]);
if ([recognizer state] == UIGestureRecognizerStateBegan) {
previousScale = scale;
}

CGFloat currentScale = MAX(MIN([recognizer scale] * scale, 10), 1);
CGFloat scaleStep = currentScale / previousScale;
[self.view setTransform: CGAffineTransformScale(self.view.transform, scaleStep, scaleStep)];

previousScale = currentScale;

if ([recognizer state] == UIGestureRecognizerStateEnded ||
[recognizer state] == UIGestureRecognizerStateCancelled ||
[recognizer state] == UIGestureRecognizerStateFailed) {
// Gesture can fail (or cancelled?) when the notification and the object is dragged simultaneously
scale = currentScale;
NSLog(@"Final scale: %f", scale);
}
}

那么,如果初始右 View (第一张图片)已经实现,我该如何停止缩小呢?

最佳答案

我必须在 resetImage 方法中将变量 scale 重置为 1.0。所以现在它可以正常工作了。

关于ios - 捏合和点击手势无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612227/

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