2017-07-17 38 views
0

由于NSGridView在Interfacebuilder中不可用,我尝试以编程方式创建一个NSGridView。 我想是这样的:以编程方式创建NSGridView

class ViewController: NSViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad()  

     let lb1 = NSTextField(labelWithString: "Label1") 
     let lb2 = NSTextField(labelWithString: "Label2") 
     let lb3 = NSTextField(labelWithString: "Label3") 
     let lb4 = NSTextField(labelWithString: "Label4") 
     let lb5 = NSTextField(labelWithString: "Label 5 long text ...") 
     let bu = NSButton(title: "Button", target: nil, action: nil) 

     let empty = NSGridCell.emptyContentView 

     let gridView = NSGridView(views: 
     [ 
     [empty, lb1], 
     [empty, lb2], 
     [lb3, lb4], 
     [lb5], 
     [bu], 
     ]) 
    self.view.addSubview(gridView) 
    } 

但我只得到一个相思窗口 - what's回事?

+1

什么是'gridView'的框架? – Willeke

+0

增加:gridView.frame = self.view.frame //似乎工作 – mica

+0

为什么需要框架的设置?在NSStackview中,我不这么认为。 – mica

回答

1

您需要的GridView的translatesAutoresizingMaskIntoConstraints属性设置为false,并添加约束

gridView.translatesAutoresizingMaskIntoConstraints = false 
NSLayoutConstraint.activate([ 
    // Your constraints 
]) 

或者你可以设置帧手动