我正在开发自定义NSView,我想要一个简单的应用程序来测试它在初始化和解除分配时的行为方式。为此,我想创建一个带有“添加”和“删除”按钮的窗口,该按钮将添加我的自定义视图,彼此相邻,大小相同。事实证明这比我更难。我以前有过使用Qt和Gtk +的经历,这很简单(就像你在那里构建用户界面一样)。
我尝试创建一个NSBox并将其添加到它,但这意味着我必须使用自动布局并以编程方式创建字符串,如" [view1] - [view2] - [view3]"这听起来很痛苦,即便如此,我也不确定这是否足够。
我也试过使用NSCollectienView,但我无法弄清楚如何添加任意NSView。
答案 0 :(得分:1)
看看NSStackView
。它是Interface Builder对象库中的一个相对较新的类(右起第二个)。
您可以垂直或水平堆叠视图,Cocoa会为您处理所有自动布局。在下面的代码片段中,我将30个文本字段叠加在另一个上面:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var stackView: NSStackView!
func applicationDidFinishLaunching(aNotification: NSNotification) {
for each in 0..<30 {
var f = NSTextField()
f.translatesAutoresizingMaskIntoConstraints = false
stackView.addView(f, inGravity:.Top)
}
}
}
如果您想要比上述更复杂的东西,Apple会提供一个名为InfoBarStackView的演示项目来帮助您启动并运行。无论是否符合您的特定要求,对于您所描述的内容,此方法肯定比NSBox
和NSCollectionView
更好。