3

我正在研究一个非常简单的 Ray Wenderlich iOS“拖动”示例,其中 2 UIImageViews(猴子和香蕉)可以在屏幕上拖动。它利用UIPanGestureRecognizerViewController 实现文件中的 a:

- (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?不走touchesBegan, touchesEnded, etc 方法路线?

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

4

1 回答 1

4

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

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

就像您告诉您正在做 Ray Wenderlich 教程一样,我会建议您查看有关 autolayout 的教程。Ray Wenderlich 站点中的材料是一个很好的起点。

--

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

禁用自动布局

于 2013-05-30T04:21:50.723 回答