Интересно, почему всегда происходит сбой, когда я пытаюсь установить autoresizingMask
для объекта NSView
программно? В следующих строках кода у меня есть крошечный синий NSVIew
объект (topLeftView), установленный в верхнем левом углу его родительского контейнера.
class ViewController: NSViewController {
// MARK: - IBOutlet
@IBOutlet weak var panView: PanView!
override func viewDidLoad() {
super.viewDidLoad()
makeImageContainer(point: CGPoint.zero)
}
func makeViewContainer(point: CGPoint) {
let myView = NSView(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 150.0, height: 150.0))
myView.wantsLayer = true
if let myLayer = myView.layer {
myLayer.backgroundColor = NSColor.orange.cgColor
}
panView.addSubview(myView) // panView is an IBOutlet-connected `NSView` object.
/* tiny, blue `NSView` object */
let topLeftView = NSView(frame: CGRect(origin: CGPoint(x: 0.0, y: 150.0 - 6.0), size: CGSize(width: 6.0, height: 6.0)))
topLeftView.wantsLayer = true
topLeftView.autoresizingMask = [.minXMargin, .maxYMargin]
if let layer = topLeftView.layer {
layer.backgroundColor = NSColor.blue.cgColor
}
myView.addSubview(topLeftView)
}
}
Итак, у него есть minXMargin
и maxYMargin
autoresizingMask
s.
Теперь я хочу нажать на кнопку pu sh, чтобы изменить размер этого оранжевого NSView
объекта-контейнера в посмотрим, будет ли крошечный синий NSView
объект придерживаться в верхнем левом углу.
@IBAction func testClicked(_ sender: NSButton) {
for i in 0..<panView.subviews.count {
let subView = panView.subviews[i]
if i == 4 {
subView.setFrameSize(CGSize(width: 200.0, height: 200.0))
}
}
}
И крошечный парень прошел мимо 50 баллов вправо и 50 баллов внизу. Что я делаю неправильно? Спасибо.