Я сделал простой заголовок ViewView, который показывает aws серую нижнюю линию над основным NSView, как заголовок в Xcode. Код показан ниже:
import Cocoa
class HeaderView: NSView {
var border = CALayer()
required init?(coder decoder: NSCoder) {
super.init(coder: decoder)
self.wantsLayer = true
self.layer?.backgroundColor = NSColor.white.cgColor
border.backgroundColor = NSColor.quaternaryLabelColor.cgColor
layer?.addSublayer(border)
}
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
border.frame = CGRect(x: 0.0, y: 0.0, width: frame.width, height: CGFloat(1.0))
}
}
Строка dr aws, но когда я изменяю размер окна, возникает небольшая задержка, когда линия перерисовывается. Так что, если я потяну правую сторону окна вправо, вы можете кратко увидеть разрыв в строке на правой стороне.
Я также попытался добавить:
self.layerContentsRedrawPolicy = .duringViewResize
Но это ничего не изменилось.
Как я могу убедиться, что строка постоянно обновляется при изменении размера окна?