vertical top middle left align xcode cocoa xcode4.2 vertical-alignment nstextfield

xcode - middle - uilabel top left alignment



NSTextField alineaciĆ³n vertical (3)

Lo que quieras es posible, pero tendrás que crear una subclase de NSTextFieldCell y luego usar esa subclase en tu NSTextField. Los métodos clave que desea reemplazar son selectWithFrame: y editWithFrame:

Aquí hay una publicación en el blog del fantástico Daniel Jalkut sobre esto, que incluso incluye una versión descargable lista para usar . La publicación es bastante antigua pero aún debería funcionar bien.

Estoy creando una aplicación de cacao en la que creé NSTextField programáticamente de esta manera,

NSView *superView = [[NSView alloc] initWithFrame:NSMakeRect(0, 300, 1400, 500)]; NSTextField *myTextField = [[NSTextField alloc] initWithFrame:NSMakeRect(180, 100, 1000, 300)]; [myTextField setStringValue:myText]; [myTextField setEditable:NO]; [myTextField setBezeled:NO]; [myTextField setDrawsBackground:NO]; [myTextField setSelectable:NO]; [myTextField setFont:[NSFont fontWithName:@"Futura" size:22]]; [superView addSubview:myTextField]; [superView setAutoresizesSubviews:YES]; [myTextField setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; [self.window.contentView addSubview:superView];

Ahora quiero una alineación vertical de mi texto y debería ser ajustable según la longitud del texto .
¿Alguien tiene alguna sugerencia? Por favor comparte tu sugerencia :)

Muchas gracias..!!


Para ajustar el campo de texto al tamaño de la cadena, tiene que calcular el tamaño del texto con NSString de sizeWithFont: constrainedToSize: lineBreakMode: antes y luego ajuste el tamaño del campo de texto con la configuración del marco.

Para la alineación vertical, mira esta question (y las respuestas).


anule ViewWillDraw y coloque su NSTextField en el centro de su vista principal en este punto. Esto funciona con el cambio de tamaño en vivo también. También puede ajustar el tamaño de fuente en este punto para encontrar una fuente que se ajuste al nuevo tamaño.