gpt4 book ai didi

swift - cocoa swift : Subview not resizing with superview

转载 作者:行者123 更新时间:2023-12-03 16:56:32 26 4
gpt4 key购买 nike

我正在添加一个 subview (NSView),这是我的代码:

override func viewDidAppear() {
self.view.needsDisplay = true
let newView = NSView()
newView.autoresizesSubviews = true
newView.frame = view.bounds
newView.wantsLayer = true
newView.layer?.backgroundColor = NSColor.green.cgColor
view.addSubview(newView)
}

而且效果很好

enter image description here但是当我调整窗口大小时, subview 没有调整大小。

enter image description here

你们中有人知道为什么或如何使 subview 与 super View 一起调整大小吗?

我非常感谢您的帮助

最佳答案

您将 view.autoresizesSubviews 设置为 true,这会告诉 view 调整其每个 subview 的大小。但您还必须指定如何调整每个 subview 的大小。您可以通过设置 subview 的 autoresizingMask 来实现这一点。由于您希望 subview 的 frame 继续与父 View 的 bounds 匹配,因此您希望 subview 的 widthheight是灵活的,并且您希望其 X 和 Y 边距固定(为零)。因此:

override func viewDidAppear() {
self.view.needsDisplay = true
let newView = NSView()

// The following line had no effect on the layout of newView in view,
// so I have commented it out.
// newView.autoresizesSubviews = true

newView.frame = view.bounds

// The following line tells view to resize newView so that newView.frame
// stays equal to view.bounds.
newView.autoresizingMask = [.width, .height]

newView.wantsLayer = true
newView.layer?.backgroundColor = NSColor.green.cgColor
view.addSubview(newView)
}

关于swift - cocoa swift : Subview not resizing with superview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55875138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com