Программная установка AutoresizingMask для объекта NSView - PullRequest
0 голосов
/ 13 января 2020

Интересно, почему всегда происходит сбой, когда я пытаюсь установить 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)
    }
}

enter image description here

Итак, у него есть 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))
        }
    }
}

enter image description here

И крошечный парень прошел мимо 50 баллов вправо и 50 баллов внизу. Что я делаю неправильно? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...