想知道为什么我的代码不起作用?给我一个错误:
类型的价值' UIImageView'没有会员' CenterSmallDot'
当拖动WhiteDot并触摸SmallDot中心时,尝试将其打印出来并打印出#34; It Worked。"
override func viewDidLoad() {
super.viewDidLoad()
var CenterSmallDot = SmallDot.center
}
@IBAction func handlePan(recognizer:UIPanGestureRecognizer) {
let translation = recognizer.translation(in: self.view)
if let view = recognizer.view {
view.center = CGPoint(x: view.center.x + translation.x, y: view.center.y + translation.y)
}
recognizer.setTranslation(CGPoint.zero, in: self.view)
if (WhiteDot.frame.intersects(SmallDot.CenterSmallDot)) {
print("It Worked")
}
}
答案 0 :(得分:1)
根据我的理解,WhiteDot
和SmallDot
都是UIImageView
。
CenterSmallDot
是viewController的viewDidLoad
func中的局部变量,因此您无法在viewDidLoad
func之外的任何位置使用它。
快速解决方法是删除CenterSmallDot
变量
if (WhiteDot.frame.intersects(SmallDot.center)) {
print("It Worked")
}
现在您还有另一个问题:intersects
需要CGRect
参数,而不是CGPoint
。只需使用contains
方法:
if (WhiteDot.frame.contains(SmallDot.center)) {
print("It Worked")
}
正如你似乎从Swift开始,这是一本来自Apple的好书: https://itunes.apple.com/us/book/the-swift-programming-language-swift-3-1/id881256329?mt=11
您将学习很多 - 在我们的案例变量和命名约定中,以及更一般地了解Swift如何工作。