gpt4 book ai didi

swift - 将 xib 文件加载到自定义 NSView 中会嵌入到另一个自定义 NSView 中

转载 作者:行者123 更新时间:2023-11-30 12:19:48 28 4
gpt4 key购买 nike

我有一个自定义 NSView(称为 Header),我可以在运行时加载它。然而,这个自定义 NSView (Header) 在运行时嵌入到另一个更大的自定义 NSView 中,并且它在底部产生额外的空间(我不想要这个额外的空间)。是否有另一种加载 xib 文件的方法不会出现此问题?

它是这样的:enter image description here

以下是我加载 xib 文件的方式:

import Cocoa

class Header: NSView {

@IBOutlet var view: Header!
@IBOutlet weak var dateLabel: NSTextField!
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)

// Drawing code here.
}
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
var topLevelObjects = NSArray()
Bundle.main.loadNibNamed("Header", owner: self, topLevelObjects: &topLevelObjects)

let view = ((topLevelObjects as Array).filter { $0 is NSView })[0] as! NSView
self.frame = NSRect(x: 0, y:0, width: view.frame.width, height: view.frame.height)
self.addSubview(self.view)
}

required init?(coder: NSCoder) {
super.init(coder: coder)
}
}

最佳答案

为什么不使用约束和 View 添加自己的 header 。太简单了。

let mainContainer = UIView()
mainContainer.backgroundColor = UIColor.blue
mainContainer.translatesAutoresizingMaskIntoConstraints = false

self.view.addSubview(mainContainer)

let views = ["mainContainer" : mainContainer]

let metrics = ["mainContainerWidth" : self.view.bounds.width]

self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[mainContainer]|", options: [], metrics: metrics, views: views))

self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[mainContainer]|", options: [], metrics: metrics, views: views))

这里有几个使用 VF 的示例。

我希望这会有所帮助。

https://github.com/CristianCardosoA/Auto-layout-VF

关于swift - 将 xib 文件加载到自定义 NSView 中会嵌入到另一个自定义 NSView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44938085/

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