【问题标题】:Create NSGridView programmatically以编程方式创建 NSGridView
【发布时间】:2017-07-17 13:00:26
【问题描述】:

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

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

但我只得到一个 blanc Window - 出了什么问题?

【问题讨论】:

  • gridView的框架是什么?
  • 添加:gridView.frame = self.view.frame //似乎工作
  • 为什么需要设置frame?在 NSStackview 中,我认为不是。
  • 我认为 NSStackview 会自动调整大小以适应子视图,而 NSGridView 不会。

标签: cocoa nsview appkit


【解决方案1】:

需要将gridView的translatesAutoresizingMaskIntoConstraints属性设置为false并添加约束

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

或者你可以手动设置框架

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 2013-07-25
    • 2013-07-22
    • 2018-06-04
    • 2015-03-17
    • 2013-11-24
    • 2016-01-01
    • 2011-03-04
    • 2012-09-17
    相关资源
    最近更新 更多