使用 UIPanGestureRecognizer 从 CGRect 获取 UIView - Swift 2.0
Posted
技术标签:
【中文标题】使用 UIPanGestureRecognizer 从 CGRect 获取 UIView - Swift 2.0【英文标题】:Get UIView from CGRect using UIPanGestureRecognizer - Swift 2.0 【发布时间】:2016-02-02 02:33:16 【问题描述】:我正在开发一个使用 UIPanGesturerecognizer 来移动 UIView 的应用程序。我的屏幕上有 3 个视图,更多固定。
我将用手势拖动的视图颜色为 蓝色。第一个视图固定为 橙色 颜色。第二个视图固定为 green 颜色。第三个视图固定为 Purple 颜色。
我的实际 Swift 代码:
import UIKit
class ViewController: UIViewController
@IBOutlet var panView: UIView!
override func viewDidLoad()
super.viewDidLoad()
override func viewDidAppear(animated: Bool)
super.viewDidAppear(animated)
panView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: "panViewGesture:"))
func panViewGesture(sender: UIPanGestureRecognizer)
let locationInView = sender.locationInView(self.view)
if sender.state == .Changed
panView.frame.origin = locationInView
我的问题:
当 View Blue 位于 View Orange 上时,View Orange 应将背景颜色更改为蓝色,如“View Blue” '。
View Green 和 View Purple 也是如此。
我想做的事:
我正在尝试创建一个从 CGRect 数据中识别的函数,该数据是下面的视图并返回 UIView。
回到UIView,我可以轻松改变背景颜色。
我需要什么?
我需要一种语法,可以在使用 UIPanGestureRecognizer 拖动另一个 UIView 时使视图的识别重叠
有人可以帮我吗?
【问题讨论】:
【参考方案1】:使用修改后的代码:
class ViewController: UIViewController
@IBOutlet var panView: UIView!
override func viewDidLoad()
super.viewDidLoad()
override func viewDidAppear(animated: Bool)
super.viewDidAppear(animated)
panView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: "panViewGesture:"))
func panViewGesture(sender: UIPanGestureRecognizer)
let locationInView = sender.locationInView(self.view)
if sender.state == .Changed
panView.center = locationInView
if let view = intersectingViewWithView(panView)
view.backgroundColor = panView.backgroundColor
func intersectingViewWithView(panView: UIView) -> UIView?
for view in self.view.subviews
if view != panView
if CGRectIntersectsRect(panView.frame, view.frame)
return view
return nil
【讨论】:
以上是关于使用 UIPanGestureRecognizer 从 CGRect 获取 UIView - Swift 2.0的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 UIPanGestureRecognizer 移动对象时会有延迟?
UIPanGestureRecognizer ***视图未获取事件,子视图使用它们
在 UITableView 上滑动删除以使用 UIPanGestureRecognizer
在 UIPanGestureRecognizer 中使用velocityInView