使用 UIPanGestureRecognizer 从 CGRect 获取 UIView - Swift 2.0
Get UIView from CGRect using UIPanGestureRecognizer - Swift 2.0
我正在开发一个应用程序,它使用 UIPanGesturerecognizer 来 move a UIView .我的屏幕上 3 更多 views,更多 fixed.
我将用手势拖动的视图颜色为蓝色。第一个视图固定为 orange 颜色。第二个视图固定为 green 颜色。第三个视图固定为 紫色 颜色。
我的实际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'.
绿色视图和紫色视图也是如此。
我想做什么:
我正在尝试制作一个从 CGRect 数据识别的函数,该数据是从下面看的视图和 returns 一个 UIView。
回到UIView,我可以轻松改变背景颜色。
我需要什么?
我需要一种语法,可以在使用 UIPanGestureRecognizer 拖动另一个 UIView 时识别视图重叠
有人可以帮助我吗?
使用修改后的代码:
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 来 move a UIView .我的屏幕上 3 更多 views,更多 fixed.
我将用手势拖动的视图颜色为蓝色。第一个视图固定为 orange 颜色。第二个视图固定为 green 颜色。第三个视图固定为 紫色 颜色。
我的实际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'.
绿色视图和紫色视图也是如此。
我想做什么:
我正在尝试制作一个从 CGRect 数据识别的函数,该数据是从下面看的视图和 returns 一个 UIView。
回到UIView,我可以轻松改变背景颜色。
我需要什么?
我需要一种语法,可以在使用 UIPanGestureRecognizer 拖动另一个 UIView 时识别视图重叠
有人可以帮助我吗?
使用修改后的代码:
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
}
}