2012-02-22 17 views
5

Necesito programar algunas etiquetas y campos de texto. Puedo llegar allí.Programar mediante programación una etiqueta de varias líneas

//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]; 

Pero no pude encontrar nada en los documentos que me permitiera establecer una propiedad de ajuste. En IB, la propiedad es el diseño con 'scroll, wrap and truncate' como sus opciones. NSTextField no tiene un método para configurar esto, y si voy por la cadena de herencia tampoco NSControl. NSView tiene un método setNeedsLayout pero no parece relacionada:

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 no tiene ningún métodos bien. Cualquier ayuda sería apreciada.

Respuesta

1

No probado, pero setWraps: de NSTextFieldCell (heredado de NSCell) debe hacer lo que está buscando.

Para obtener la celda, envíe el método cell al campo de texto. NSTextField hereda el método cell de NSControl, por lo que si desea leer los documentos, debe buscar en los documentos NSControl.

Más sobre cómo funcionan las celdas en el NSCell docs.

+0

Gracias, pero no hay ningún método setWraps en la página de desarrollador y lanza una advertencia cuando construyo: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSTextFieldCell_Class/Reference/Reference.html#//apple_ref/occ/cl/NSTextFieldCell, también se ve como un NSTextField, por defecto, se ajustará según el ancho y la altura que inicialmente le proporcione. – PruitIgoe

+0

, ¿tengo que hacer referencia al propio NSTextFieldCell? Y si es así, ¿cómo hago eso? – PruitIgoe

6

En OS X 10.11 y Swift 2.1 A continuación me ayudó:

multilineLabel.lineBreakMode = .ByWordWrapping 
multilineLabel.setContentCompressionResistancePriority(250, forOrientation: .Horizontal) 

configuración es necesaria la resistencia a la compresión si se utiliza de diseño automático.

4

Esto funciona para mí:

textField.usesSingleLineMode = false 
textField.cell?.wraps = true 
textField.cell?.scrollable = false 

Estoy usando este código en un campo de texto programático en este proyecto: http://stylekit.org/blog/2016/02/07/Text-formating/

+0

¡La mejor respuesta! –

Cuestiones relacionadas