gpt4 book ai didi

swift - 显示在 containerView 中的 NSViewController 不与 Cocoa App Swift [Mac OS] 中容器的边界对齐

转载 作者:行者123 更新时间:2023-11-28 11:33:53 28 4
gpt4 key购买 nike

容器 View 的NSViewcontroller代码

@IBOutlet weak var cv: NSView!
override func viewDidLoad() {
super.viewDidLoad()
let vc2 = storyboard?.instantiateController(withIdentifier: "vc2") as! VC2
addChild(vc2)
vc2.view.frame=cv.bounds
cv.addSubview(vc2.view)
cv.wantsLayer=true
cv.layer?.backgroundColor=NSColor.red.cgColor

}

要在容器 View 中显示的NSViewController的代码

   override func viewDidLoad() {
super.viewDidLoad()
self.view.wantsLayer=true
self.view.layer?.backgroundColor=NSColor.white.cgColor

}

我添加了白色图层以更好地描述我的问题 enter image description here

我已经在 Storyboard 中正确设置了容器 View 的约束,并检查了容器 View 是否也占据了整个 ViewController。

为什么我的 viewController 只设置了容器 View 的一部分而不是全部?

ContainerView 边界控制台图像 enter image description here

您的简历和完整窗口的初始大小为 480*270。那时,您的 vc2 大小也是正确的。但后来我调整了你的整个窗口。 cv 会调整大小但 vc2 不会。

最佳答案

问题是,当您使用约束时,它们会随着布局的变化而调整大小。但是在 vc2 中,你在一开始就给了它一个恒定的大小。这就是为什么即使您调整窗口大小,它也不会调整大小。尝试以编程方式将约束分配给 vc2.view 以将其附加到其 super View (cv)。这将确保 vc2.view 将随 cv 调整大小。

确保在 cv.addSubview(vc2.view) 之后分配约束。

查看 this library这将在创建约束时删除大量样板代码。

关于swift - 显示在 containerView 中的 NSViewController 不与 Cocoa App Swift [Mac OS] 中容器的边界对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56106597/

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