我怎样才能拥有我的颜色选择器(UIView
)留在 300px 300px 的色轮内?我正在使用UIPanGestureRecognizer
将颜色选择器拖动到色轮周围UIImageView
.
色轮的直径为300px。
这是我的图像UIViewController
:
问题是它可以被拖动到轮子之外的任何地方:
那么我怎样才能保持我的UIView
悬停在色轮上方的圆内?
感谢您的帮助。
这看起来更像是一个数学问题。如果您只想防止子视图离开圆圈,那么您需要在执行移动代码的任何位置插入一些逻辑。
首先找到圆的中心。假设圆形视图是一个经过裁剪的 UIView,通过获取中心视图
CGPoint center;
center.x = view.frame.origin.x + view.frame.size.width/2;
center.y = view.frame.origin.y + view.frame.size.height/2;
然后你必须计算触摸点和圆心之间的距离
CGPoint touch = //location of the touch point
CGFloat distance = sqrt( pow(touch.x-center.x,2)+pow(touch.y-center.y,2) )
如果距离低于 300,则您可以正常移动子视图
if (distance < 300) {
//do your thing
}
如果您希望视图在您离开圆圈的任何地方停止移动,然后捕捉到您再次进入的任何地方,那么您可以在这里停止。如果您想沿着手指的方向移动,即使手指在视图之外,那么我建议形成一个向量并将其乘以 300。
CGPoint newPosition;
newPosition.x = touch.x / distance * 300;
newPosition.y = touch.y / distance * 300;
这将为您提供最接近触摸点的圆边缘的位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)