【问题标题】:cocoa osx add nstextfields programmatically可可 osx 以编程方式添加 nstextfields
【发布时间】:2015-02-04 17:48:26
【问题描述】:

我正在为 osx 创建一个项目,我需要以编程方式将多个 NSTextfields 添加到自定义视图 (NSView)。我不知道如何正确实现这一点。

这是我需要做的:

我知道如何创建 NSTextfiedls 以及如何将它们添加到 NSView,但我不知道如何将它们配置为在图像中显示并在代码中设置任何约束。我正在使用自动布局。

【问题讨论】:

    标签: macos cocoa constraints nsview nstextfield


    【解决方案1】:

    看看使用NSStackView 类来保存您的文本字段。对于简单的设置——比如你截图中的设置——这个类会为你做自动布局。

    为了帮助您掌握它,Apple 提供了一个名为 InforBarStackView 的示例演示。


    下面的屏幕截图来自一个程序,该程序将堆栈视图实例添加到 Interface Builder 中原本为空的窗口中。

    文本字段添加了以下代码:

    // AppDelegate has a stackView outlet
    for each in 0...2 {
        var f = NSTextField()
        f.translatesAutoresizingMaskIntoConstraints = false
        stackView.addView(f, inGravity:.Top)
    }
    

    【讨论】:

    • 我不知道如何使用stackview。你能发布一个更复杂的例子吗?使用stackview我可以无限制地添加多个项目吗?
    • 您能发布一个更复杂的示例吗? - 已更新帖子以提供指向 Apple 演示的链接,该演示展示了 NSStackView我可以添加多个有限制的项目吗? - 此类问题最好由课程文档回答。从我可以看到NSStackView 类参考提到限制它可以处理的子视图。
    【解决方案2】:

    您可以为每个文本字段指定框架。 喜欢

    NSRect rect = NSMakeRect(xPos,SuperView.frame.size.height - (padding + control_Height),control_Width,control_Height);
    `for(int i = 0;i < 3;i++)
    {
    
    NSTextField *textField = [[NSTextField alloc] initWithFrame:rect];
    [superView addSubView:textField];
    [textField release];
    rect.origin.y -= (padding + control_Height);
    
    }`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多