我想知道为什么每次尝试通过编程方式将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
个。
现在,我想单击一个按钮来调整此橙色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点。我究竟做错了什么?谢谢。