cocoa osx以编程方式添加nstextfields

时间:2015-02-04 17:48:27

标签: macos cocoa constraints nsview nstextfield

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

这就是我需要做的事情:

enter image description here

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

2 个答案:

答案 0 :(得分:1)

您可以为每个文本字段指定帧。 像

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

}`

答案 1 :(得分:1)

请查看使用NSStackView类来保存文本字段。对于简单的设置 - 如屏幕截图中的设置 - 此类为您自动布局。

enter image description here

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


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

enter image description here

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

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