ios – 停止UIView离开UIPanGesture的容器?

ios – 停止UIView离开UIPanGesture的容器?,第1张

概述我已经设法阻止我的UIView通过平移手势走出容器,但我正在努力实现的是阻止它的边缘.目前它直接到达最后一个像素边缘而不是可移动视图的边缘. 我尝试改变帧值,我认为这是要走的路,但无法产生正确的结果.我不确定我有多近或有更简单的方法? 如何在可移动视图的边缘而不是最后一个像素处停止它? //Container is self.sliderContainer//Green Block is sen 我已经设法阻止我的UIVIEw通过平移手势走出容器,但我正在努力实现的是阻止它的边缘.目前它直接到达最后一个像素边缘而不是可移动视图的边缘.

我尝试改变帧值,我认为这是要走的路,但无法产生正确的结果.我不确定我有多近或有更简单的方法?

如何在可移动视图的边缘而不是最后一个像素处停止它?

//Container is self.slIDerContainer//Green Block is sender.vIEw which has a UIGesture applIEd    var location = sender.locationInVIEw(self.vIEw)    var newFrame = CGRectMake(0,self.slIDerContainer.frame.wIDth,self.slIDerContainer.frame.height)    let obstacleVIEwFrame = self.vIEw.convertRect(self.slIDerContainer.frame,fromVIEw: self.slIDerContainer.supervIEw)        // Check if the touch is insIDe the obstacle vIEw        if CGRectContainsPoint(obstacleVIEwFrame,location) {            sender.vIEw!.center.x = sender.vIEw!.center.x + translation.x            sender.setTranslation(CGPointZero,inVIEw: self.vIEw)        }
解决方法 我建议以最简单的方式进行,不限制手势,只确保矩形不会越界:

let movingVIEw = sender.vIEw!let minCenterX = movingVIEw.frame.size.wIDth / 2let maxCenterX = self.slIDerContainer.frame.wIDth - movingVIEw.frame.size.wIDth / 2let newCenterX = movingVIEw.center.x + translation.xmovingVIEw.center.x = min(maxCenterX,max(minCenterX,newCenterX))
总结

以上是内存溢出为你收集整理的ios – 停止UIView离开UIPanGesture的容器?全部内容,希望文章能够帮你解决ios – 停止UIView离开UIPanGesture的容器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1046626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存