容器 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
}
我已经在 Storyboard 中正确设置了容器 View 的约束,并检查了容器 View 是否也占据了整个 ViewController。
为什么我的 viewController 只设置了容器 View 的一部分而不是全部?
您的简历和完整窗口的初始大小为 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/