在 UIImageView 上添加 UIPinchgesture 的哪个比例或在 UIImageView 包含的 UIView 上?

Posted

技术标签:

【中文标题】在 UIImageView 上添加 UIPinchgesture 的哪个比例或在 UIImageView 包含的 UIView 上?【英文标题】:Where to add UIPinchgesture on UIImageView which scale or on UIView in which UIImageView contain? 【发布时间】:2012-05-16 21:08:45 【问题描述】:

专家!! 请帮助我!!!! 在我的项目中,我以编程方式创建多个 UIImageview。我想在每个 ImageView.i 上添加捏合手势 我的代码如下......

-(IBAction)addSymbols:(UIButton *)sender
if (sender.tag ==1) 
CGRect frame =sender.frame;
[self.imgView setFrame:frame];
self.imgView.userInteractionEnabled = YES;
[imgView setImage:[sender imageForState:UIControlStateNormal]];
[self.view addSubview:imgView];
[self addGestureRecognizersToPiece:imgView];

像这样我添加了 5 个图像视图。现在[self addGestureRecognizersToPiece:imgView]的代码

- (void)addGestureRecognizersToPiece:(UIView *)piece
UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scalePiece:)];
[piece  addGestureRecognizer:pinchGesture];

//In above add gesture on UIImageView directly its not working..
//if replace this line by [self.view addGestureRecognizer:pinchGesture]; it's working..
//but while pinch whole UIview scale

[pinchGesture setDelegate:self]; 

另一个错误是 UIPinchgesture 不能单独在多个 UIImageView 上正确工作。 所以请帮助我..尽快回复我..

- (void) scalePiece:(UIPinchGestureRecognizer*)paramSender 

if (paramSender.state == UIGestureRecognizerStateEnded)  
self.currentScale = paramSender.scale;
 
else if (paramSender.state == UIGestureRecognizerStateBegan && self.currentScale != 0.0f) 

paramSender.scale = self.currentScale; 
 if (paramSender.scale != NAN && paramSender.scale != 0.0) 
[paramSender view].transform= CGAffineTransformMakeScale(paramSender.scale, paramSender.scale); 
 

正如你告诉我的,我为每个 UIImageView 添加了 userInteractionEnabled = YES。我在我的代码中也提到了

【问题讨论】:

【参考方案1】:

您应该在 UIImageViews 上启用userInteractionEnabled。默认情况下禁用此功能。

如果您需要更多帮助,请告诉我们您的scalePiece:code。

【讨论】:

- (void) scalePiece:(UIPinchGestureRecognizer*)paramSender if (paramSender.state == UIGestureRecognizerStateEnded) self.currentScale = paramSender.scale; else if (paramSender.state == UIGestureRecognizerStateBegan && self .currentScale != 0.0f) paramSender.scale = self.currentScale; if (paramSender.scale != NAN && paramSender.scale != 0.0) [paramSender view].transform= CGAffineTransformMakeScale(paramSender.scale, paramSender.scale);正如你告诉我的,我为每个 UIImageView 添加了 userInteractionEnabled = YES。我在我的代码中也提到了 谁应该阅读那个..把它放在你的帖子中。并描述您的确切问题。什么不起作用,什么行为错误!? 我在上面发布了我的整个代码。如果我的代码有任何变化,现在回复我【参考方案2】:

将 imageViews 添加为 ScrollView 的子视图。

然后设置scrollView的scrollView zoomScale。 还要实现scrollView的委托方法,尤其是下面那个。

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

返回要缩放的 imageView 对象。

参考这些 UIScrollView

UIScrollViewDelegate

【讨论】:

Ohhk..我也试试这个..我正在考虑用 UIscrollview 替换我的 UIPinchgesture 并由它的代表处理..谢谢回复..

以上是关于在 UIImageView 上添加 UIPinchgesture 的哪个比例或在 UIImageView 包含的 UIView 上?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 如何在 UIImageView 上添加显示字符串

在 UIImageView 上使用 Tint 颜色

在 UIScrollView 内的 UIImageView 上启用 GestureRegnizer

使用 Core Graphics 在 UIImageView 上绘制一个矩形

在 UIImageView 上绘制 UIBezierPath

如何将 UIImageView 添加到导航栏的右侧?