阻止UIImageView返回到View中的原始位置?

时间:2013-05-30 03:42:30

标签: iphone ios ios6 autolayout

我正在通过一个非常简单的Ray Wenderlich iOS“拖动”示例,其中2 UIImageViews(猴子和香蕉)可以在屏幕上拖动。它在ViewController实现文件中使用UIPanGestureRecognizer

- (IBAction)handlePan:(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];

}

工作正常,猴子和香蕉留在你拖动它们的任何位置。但是,我想要点击(触摸)UIImageView中的任何一个来成为最顶层的视图。我愚弄了一下,想出了这行代码:

 [self.view bringSubviewToFront:recognizer.view];

我把它放在handlePan方法中,它确实将点击(触摸)的图像带到前面,但它将之前的图像重置为屏幕上的原始位置。如果省略将触摸的子视图放在前面的代码行,则不会这样做。

将选定的子视图置于正面,将另一个图像重置为原始位置是什么意思?如何在UIPanGestureRecognizer中阻止这种情况?没有去touchesBegantouchesEnded等方法路线?

显然我是ios编程的新手,但我找不到可能是一个简单问题的答案。谢谢你们......任何帮助都表示赞赏......

1 个答案:

答案 0 :(得分:4)

我在这里重新创建了你的来源。问题是自动布局,您需要禁用它。因为当您将视图置于前面时,它会将规则应用于其他视图以检查位置,并将其重新定位在原始位置。

那么,为什么在更换相框时不会发生这种情况?当您仅更改框架时,每次更改一个视图的中心时,它都不会应用自动布局规则,它仅在视图容器层次结构更改或视图容器框架更改时应用。

就像你告诉你正在做Ray Wenderlich教程一样,我建议你检查一下the tutorial about autolayout。 Ray Wenderlich网站的资料是一个很好的起点。

-

在.xib和故事板上禁用自动布局只需一点帮助,选择视图并禁用复选框:

disabling the autolayout