我需要以编程方式制作一些标签和文本字段。我可以到达那里。
//create the file name label
NSTextField* newFileNameLabel = [[NSTextField alloc] initWithFrame:NSMakeRect(objXPos, objYPos, 300.0, 20.0)];
//set properties
[newFileNameLabel setBordered: NO];
[newFileNameLabel setTextColor: [NSColor whiteColor]];
[newFileNameLabel setDrawsBackground:NO];
[newFileNameLabel setEditable:NO];
[newFileNameLabel setStringValue: @"File Name:"];
[vSheetView addSubview:newFileNameLabel];
但我在文档中找不到任何可以设置wrap属性的内容。在IB中,属性是布局,其中包含'scroll,wrap和truncate'作为选项。 NSTextField没有设置它的方法,如果我上传继承链也没有NSControl。 NSView有一个setNeedsLayout方法,但似乎没有相关性:
You only ever need to invoke this method if your view implements custom layout
not expressible in the constraint-based layout system by overriding the layout method.
The system invokes this method automatically for all views using constraints for layout.
NSTextFieldCell也没有任何方法。任何帮助,将不胜感激。
答案 0 :(得分:8)
在OS X 10.11和Swift 2.1中,以下内容帮助了我:
multilineLabel.lineBreakMode = .ByWordWrapping
multilineLabel.setContentCompressionResistancePriority(250, forOrientation: .Horizontal)
如果使用AutoLayout,则需要设置抗压性。
答案 1 :(得分:5)
这对我有用:
textField.usesSingleLineMode = false
textField.cell?.wraps = true
textField.cell?.scrollable = false
答案 2 :(得分:1)
未经过测试,但setWraps:
NSTextFieldCell
(继承自NSCell
)应该做到的。
要获取单元格,请将cell
方法发送到文本字段。 NSTextField
继承了cell
的{{1}}方法,因此,如果您想阅读文档,则需要在文档中搜索NSControl
。
有关细胞在NSCell docs中的工作原理的更多信息。