gpt4 book ai didi

swift - 调用 draw() 函数时使用什么参数?

转载 作者:行者123 更新时间:2023-11-28 11:35:06 26 4
gpt4 key购买 nike

我想在 swift 中以编程方式画一条线。我有它的工作代码(我认为),但调用该函数需要一个 CGRect 参数。而且我不确定要在那里写什么代码。

draw() 类和函数如下所示:

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)

}
}

我的绘图类如下所示:

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:永远不要

它在 View 初始化后由框架隐式调用一次。

如果你想在 View 上重绘 View 调用setNeedsDisplay()

关于swift - 调用 draw() 函数时使用什么参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55611522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com