macos cocoa nstextfield

macos - Fondo transparente de NSTextField



cocoa (7)

Creo transparente NSTextField

self.myTextField = [[NSTextField alloc] initWithFrame:CGRectMake(backgroundView.frame.origin.x + backgroundView.frame.size.width + 20, self.projectTitle.frame.origin.y - 30.0, 100, 20)]; self.myTextField.editable = NO; self.myTextField.bezeled = NO; self.myTextField.drawsBackground = YES; self.myTextField.backgroundColor = [NSColor clearColor]; self.myTextField.selectable = NO; self.myTextField.font = [NSFont fontWithName:@"Helvetica Neue" size:16]; [self addSubview:self.compressingTime];

Y como resultado, el texto se ve mal. Si configuro el color de fondo

self.myTextField.backgroundColor = [NSColor colorWithCalibratedRed:0.85 green:0.85 blue:0.85 alpha:1.0];

todo se ve bien También lo he intentado con drawsBackground = NO; ¿Ustedes saben cómo arreglar esto?


A partir del 10.12 puedes hacer:

let label = NSTextField(labelWithString: "HELLO")


El color claro hará que la vista actual (es decir) el fondo de NSTextView sea transparente, por lo tanto, el color de NSView que contiene el NSTextView es visible.


El secreto es establecer TODAS LAS TRES de estas propiedades en NSTextField ...

myTextField.bezeled = NO; myTextField.editable = NO; myTextField.drawsBackground = NO;


Hay una propiedad en el archivo .xib, en la ventana del constructor de interfaz para el campo de texto, debajo del inspector de atributos

  1. Verifique el fondo de los dibujos de la pantalla
  2. Seleccione un color de fondo. Seleccione el color claro para el fondo transparente.


No tiene que cambiar a CATextLayer para decirle efectivamente a su aplicación que use capas para el campo de texto. Puedes usar esto en su lugar:

textField.drawsBackground = NO; textField.wantsLayer = YES;


Terminé usando CATextLayer lugar de NSTextField .


Tuve este problema ahora. Lo arreglé quitando una propiedad llamada backgroundColor de la supervista de NSTextField.

Estaba usando backgroundColor como un getter / setter conveniente para las propiedades CALayer en una subclase NSView. Aunque esta propiedad no está documentada en NSView, parece que accidentalmente he reemplazado una propiedad en NSView.

¡Yay por subclases! 😒