我创建了一个相对简单的应用程序,允许用户从屏幕底部的“托盘”UIView
拖动图像视图,当视图被删除时,它会将自身添加到a的子视图中。 'target'UIView
。
我的问题是,当我将图像视图放入目标视图时,框架完全错误,并且图像视图跳跃(看似随机)到目标视图中的另一个位置。
我已经将头发撕裂了,并且正在进行大规模的脑力训练。有没有办法在超视图中获取拖动视图的坐标,然后将其转换为目标视图的坐标?
如您所见,我将图标从“托盘”视图中取出,并在拖动开始时进入主视图。当它结束时,我只需将图标添加到目标视图中。
if (gesture.state == UIGestureRecognizerStateBegan){
if (icon.superview == viewTray) {
[self closeTray:nil];
[self.view addSubview:icon];
}
}
if (gesture.state == UIGestureRecognizerStateEnded) {
[viewTarget addSubview:icon];
}
xib基础知识的图像:
答案 0 :(得分:2)
使用手势识别器通过以下方式确定手指触摸viewTarget框架的位置:
CGPoint p = [gesture locationInView:viewTarget];
然后将图标的中心设置为该点,您就完成了:
icon.center = p;
[icon removeFromSuperView];
[viewTarget addSubview:icon];
答案 1 :(得分:1)
问题是框架在其superView的范围内。所以当你把它放到一个新的superView中时它就不一样了。你需要转换它。
此代码将其从superView坐标系转换为targetView坐标系。您应该在[viewTarget addSubview:icon];
[viewTarget convertRect:icon.frame fromView:icon.superView];