以编程方式将AutoresizingMask设置为NSView对象

时间:2020-01-13 07:58:13

标签: swift macos nsview autoresizingmask

我想知道为什么每次尝试通过编程方式将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

因此它有minXMarginmaxYMargin autoresizingMask个。

现在,我想单击一个按钮来调整此橙色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点。我究竟做错了什么?谢谢。

0 个答案:

没有答案