调用 draw() 函数时使用什么参数?
What argument do I use when calling draw() function?
我想在 swift 中以编程方式画一条线。我有它的工作代码(我认为),但调用该函数需要一个 CGRect
参数。而且我不确定在那里写什么代码。
draw() class 和函数如下所示:
class LineView : UIView {
override func draw(_ rect: CGRect) {
var aPath = UIBezierPath()
aPath.move(to: CGPoint(x:2, y:2))
aPath.addLine(to: CGPoint(x:6, y:6))
aPath.close()
}
}
现在从主 ViewDidLoad
调用它看起来像这样:
var line = LineView()
line.draw(MISSING ARGUMENT)
但我不知道我应该通过什么论点。函数中没有使用任何 CGRect
,所以我什至不确定它的用途。
更新
在 main 中,我创建了这样的对象:
class ViewController: UIViewController {
@IBOutlet weak var gameBoard: UIView!
override func viewDidLoad() {
super.viewDidLoad()
var line = LineView()
gameBoard.addSubview(line)
}
}
我的画 class 看起来像这样:
import UIKit
class LineView : UIView {
override init(frame: CGRect) {
super.init(frame: frame) //super = DO REGULAR INIT STUFF FOR UIView
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func draw(_ rect: CGRect) {
var aPath = UIBezierPath()
aPath.move(to: CGPoint(x:2, y:2))
aPath.addLine(to: CGPoint(x:6, y:6))
aPath.close()
UIColor.red.set()
aPath.stroke()
aPath.fill()
setNeedsDisplay()
}
}
得到它的工作:
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
不要给自己打电话 draw(rect:
。 从不做。
它在视图初始化后由框架隐式调用一次。
如果要在视图上重绘视图调用setNeedsDisplay()
。
我想在 swift 中以编程方式画一条线。我有它的工作代码(我认为),但调用该函数需要一个 CGRect
参数。而且我不确定在那里写什么代码。
draw() class 和函数如下所示:
class LineView : UIView {
override func draw(_ rect: CGRect) {
var aPath = UIBezierPath()
aPath.move(to: CGPoint(x:2, y:2))
aPath.addLine(to: CGPoint(x:6, y:6))
aPath.close()
}
}
现在从主 ViewDidLoad
调用它看起来像这样:
var line = LineView()
line.draw(MISSING ARGUMENT)
但我不知道我应该通过什么论点。函数中没有使用任何 CGRect
,所以我什至不确定它的用途。
更新 在 main 中,我创建了这样的对象:
class ViewController: UIViewController {
@IBOutlet weak var gameBoard: UIView!
override func viewDidLoad() {
super.viewDidLoad()
var line = LineView()
gameBoard.addSubview(line)
}
}
我的画 class 看起来像这样:
import UIKit
class LineView : UIView {
override init(frame: CGRect) {
super.init(frame: frame) //super = DO REGULAR INIT STUFF FOR UIView
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func draw(_ rect: CGRect) {
var aPath = UIBezierPath()
aPath.move(to: CGPoint(x:2, y:2))
aPath.addLine(to: CGPoint(x:6, y:6))
aPath.close()
UIColor.red.set()
aPath.stroke()
aPath.fill()
setNeedsDisplay()
}
}
得到它的工作:
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
不要给自己打电话 draw(rect:
。 从不做。
它在视图初始化后由框架隐式调用一次。
如果要在视图上重绘视图调用setNeedsDisplay()
。