我有一个允许用户平移和放大图像的应用程序。我认为,没有太多麻烦,用户可以进入一个状态,他们放大到图像的一部分,并希望将所有内容重置回“基态”(即,带来所有的翻译和分别重新调整为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的手势?
答案 0 :(得分:2)
这可以在不使用手势识别器的情况下完成。要设置缩放比例,请使用
[self.view setBound:CGRectMake(0,0,width,height)];
其中width
和height
是您设备的尺寸。
要设置翻译,请使用
[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)];
从而避免了对特定设备特定的任何点或幻数的故事。