假设我想在案例1中绘制一条线,如果我在另一条线路中使用该方法,则无法使用UIBezierPath()中的方法。
但是如果我添加"我可以使用这些方法。"紧跟BezierPath()之后的案例2
案例1
import UIKit
class ViewController: UIViewController {
let path = UIBezierPath()
path.
}
案例2
import UIKit
class ViewController: UIViewController {
let path = UIBezierPath().move(to: <#T##CGPoint#>)
}
答案 0 :(得分:3)
这种情况正在发生,因为您需要在函数内部调用方法,而不是在类的声明中调用。请尝试以下方法:
import UIKit
class ViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let path = UIBezierPath()
// Invoke method here
path.
}
}
答案 1 :(得分:3)
以下是代码的前两行:
class ViewController: UIViewController {
let path = UIBezierPath()
第一行(以class
开头)开始定义名为ViewController
的类。第二行(以let
开头)定义了一个名为path
的实例属性,并表示每次程序创建ViewController
实例时,都应该初始化path
变量通过评估表达式UIBezierPath()
。
然后你试着写这样的东西:
path.move(to: .zero)
问题是您正在尝试直接在类定义中编写该行。你不能。您可以直接在类定义中放置的唯一内容是属性和方法定义。你不能把语句写下来。
你有两种选择。一种是在稍后的方法中完成属性的初始化,例如在viewDidLoad
中。 Julian J. Tejera的答案涵盖了这一点。
另一种方法是通过执行闭包来初始化属性:
class ViewController: UIViewController {
let path: UIBezierPath = {
let path = UIBezierPath()
path.move(to: .zero)
path.addLine(to: CGPoint(x: 10, y: 0))
return path
}()
}
请注意,您不能在该闭包中引用任何ViewController
实例属性或方法,因为self
在运行时未完全初始化。