利用我对iOS的小知识试图在 ImageView 上测试缩放功能,我不想使用 scrollView 所以尝试使用 UIPinchGestureRecognisor 即可。
在模拟器上测试它可能是我的错,我正在尝试使用alt键和鼠标移动测试,因为我在很多帖子上阅读并在谷歌上搜索。
这是我试过的CODE。
<。>文件中的
@interface DetailView : UIViewController <UIGestureRecognizerDelegate>
在实施文件
中in ViewdidLoad
UIPinchGestureRecognizer *pinchImage = [[UIPinchGestureRecognizer alloc] initWithTarget:self
action:@selector(makePinch:)];
pinchImage.delegate = self;
[self.myLrgImageView addGestureRecognizer:pinchImage];
逐一尝试使用这些选择器方法
1
-(void)makePinch:(UIPinchGestureRecognizer*)sender
{
static CGRect initialBounds;
if (sender.state == UIGestureRecognizerStateBegan)
{
initialBounds = myLrgImageView.bounds;
}
CGFloat factor = [(UIPinchGestureRecognizer *)sender scale];
CGAffineTransform zt = CGAffineTransformScale(CGAffineTransformIdentity, factor, factor);
myLrgImageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);
}
2
CGFloat lastScale;
CGPoint lastPoint;
- (void)makePinch:(UIPinchGestureRecognizer *)sender
{
if (sender.state == UIGestureRecognizerStateBegan) {
lastScale = 1.0;
lastPoint = [sender locationInView:myLrgImageView];
}
// Scale
CGFloat scale = 1.0 - (lastScale - sender.scale);
[myLrgImageView.layer setAffineTransform:
CGAffineTransformScale([myLrgImageView.layer affineTransform],
scale,
scale)];
lastScale = sender.scale;
// Translate
CGPoint point = [sender locationInView:myLrgImageView];
[myLrgImageView.layer setAffineTransform:
CGAffineTransformTranslate([myLrgImageView.layer affineTransform],
point.x - lastPoint.x,
point.y - lastPoint.y)];
lastPoint = [sender locationInView:myLrgImageView];
}
在选择器方法上设置断点,但compilor永远不会进入此方法。
可能是这些代码完美无缺,我错误地使用模拟器进行双指测试,
按住选项键,鼠标左键单击&amp;移动鼠标并没有给我任何成功。
按住鼠标左键单击并移动鼠标,按住命令+选项键不会给我任何成功。
帮我解决这个问题。
答案 0 :(得分:1)
使用self.myLrgImageView.userInteractionEnabled = YES; 您可以使用(命令+ alt)键和鼠标在模拟器上测试PinchGesture。