我正在开发一个自定义nsview,我想要一个简单的应用程序来测试它在初始化和解除锁定时的行为。为此,我想创建一个带有“添加和删除”按钮的窗口,该按钮将添加我的自定义视图,一个接一个,大小相同。这比我想象的要困难。我以前有过qt和gtk+的经验,在这里这是微不足道的(这就是你在那里构建uis的方式)。
我尝试创建一个nsbox并将其添加到其中,但这意味着我必须使用自动布局并通过编程创建类似“[view1]-[view2]-[view3]”的字符串,这听起来很痛苦,即使这样我也不确定这是否足够。
我还尝试使用nscollectionview,但我无法理解如何向其中添加任意nsview。

最佳答案

看看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)
        }
    }
}

如果你想要比上面更复杂的东西,苹果会提供一个名为InfoBarStackView的演示项目,让你开始运行。不管它是否适合您的特定需求,对于您所描述的那种情况,这种方法绝对比NSBoxNSCollectionView更好。

关于objective-c - 拥有一排大小相同的自定义NSView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29047501/

10-13 08:44