Я хочу нарисовать линию программно в 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
не используется в функции, поэтому я даже не уверен в ее назначении.
UPDATE
В основном я создаю объект следующим образом:
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")
}