0

我创建了一个相对简单的应用程序,它允许用户从UIView屏幕底部的“托盘”中拖动图像视图,当视图被删除时,它会将自身添加到“目标”的子视图中UIView

我的问题是,当我将 imageview 放到目标视图中时,框架完全错误,并且 imageview 跳转(看似随机)到目标视图中的另一个位置。

我为此撕毁了我的头发,并且有一个巨大的脑屁。有没有办法在超级视图中获取拖动视图的坐标,然后将其转换为目标视图的坐标?

如您所见,我将图标从“托盘”视图中取出,并在拖动开始时进入主视图。当它结束时,我只需将图标添加到目标视图中。

if (gesture.state == UIGestureRecognizerStateBegan){
        if (icon.superview == viewTray) {
            [self closeTray:nil];
            [self.view addSubview:icon];
        }
    }


if (gesture.state == UIGestureRecognizerStateEnded) {
    [viewTarget addSubview:icon];
}

xib基础知识的图像:

http://i.imgur.com/obRKMaT.png

4

2 回答 2

2

使用手势识别器通过以下方式确定手指在 viewTarget 框架中的触摸位置:

CGPoint p = [gesture locationInView:viewTarget];

然后将图标的中心设置为该点,您就完成了:

icon.center = p;
[icon removeFromSuperView];
[viewTarget addSubview:icon];
于 2013-02-06T15:40:30.730 回答
1

问题是框​​架在其 superView 的范围内。所以当你把它放到一个新的 superView 中时,它就不一样了。你需要转换它。

此代码会将其从 superView 坐标系转换为 targetView 坐标系。您可能应该在之后立即执行此操作[viewTarget addSubview:icon];

[viewTarget convertRect:icon.frame fromView:icon.superView];
于 2013-02-06T14:37:35.143 回答