通过按钮单击重置iOS手势

时间:2012-11-29 19:57:13

标签: ios gestures

我有一个允许用户平移和放大图像的应用程序。我认为,没有太多麻烦,用户可以进入一个状态,他们放大到图像的一部分,并希望将所有内容重置回“基态”(即,带来所有的翻译和分别重新调整为0和1。

我正在做翻译:

- (void)panGestureRecognized:(UIPanGestureRecognizer *)recognizer
{
  CGPoint translation = [recognizer translationInView:self.view];
  recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                   recognizer.view.center.y + translation.y);
  [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}

这很好用,我可以翻译图像。

如果我按下按钮,我希望能够将翻译更改回0,0。实现此目的的一种方法似乎是存储手势识别器并将其设置为零,如:

mPanRecognizer.view.center = CGPointMake(mPanRecognizer.view.center.x,
                                   mPanRecognizer.view.center.y);
[mPanRecognizer setTranslation:CGPointMake(0,0) inView:self.view];

其中mPanRecognizer是存储识别器的成员变量。但是,执行此操作会生成以下日志信息,而不会发生实际的行为更改:

Ignoring call to [UIPanGestureRecognizer setTranslation:inView:] since gesture recognizer is not active.

那么如何通过按下按钮来重置要转换为0的手势?

1 个答案:

答案 0 :(得分:2)

这可以在不使用手势识别器的情况下完成。要设置缩放比例,请使用

[self.view setBound:CGRectMake(0,0,width,height)];

其中widthheight是您设备的尺寸。

要设置翻译,请使用

[self.view setCenter:CGPointMake(width/2.0,height/2.0)];

要轻松设置宽度和高度,请将视图包含在单独的UIView中。让UIView正确锚定并按正确的z顺序,然后你可以修改上面的行

[imageView setBounds:CGRectMake(0,0,imageView.superview.bounds.size.width,imageView.superview.bounds.size.height)];
[imageView setCenter:CGPointMake(imageView.superview.center.x, imageView.superview.center.y)];

从而避免了对特定设备特定的任何点或幻数的故事。