2012-06-20 16 views
34

puedo crear transparenteNSTextFieldNSTextField fondo transparente

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 un texto quedar mal. enter image description here Si fijo color de fondo

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

todo se ve bien enter image description here También he tratado con drawsBackground = NO; ¿Ustedes saben cómo solucionar este problema?

+0

¿Qué quiere decir "quedar mal"? ¿Se ve bien para mi? – Vervious

+0

@Vervious En la segunda img parece que el antialiasing está activado, la fuente en la primera img es resistente. – pawelropa

+0

Oh, ya veo eso. – Vervious

Respuesta

-2

Terminé usando CATextLayer en su lugar NSTextField.

-2

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.

+0

Lo siento, eso no es todo. – pawelropa

53

El secreto está fijando los tres de estas propiedades en el NSTextField ...

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

Aún no funciona para mí. –

+0

Gracias, funciona perfectamente para modificar el código de Apple para llenar programáticamente un NSTableView –

+0

esto solo funciona si la capa de la supervista tiene un color de fondo sólido. @ZsoltSzatmari – mrabin

-1

Usted no tiene que cambiar a CATextLayer para contar de manera efectiva la aplicación para utilizar capas para el campo de texto. Sólo se puede utilizar en su lugar:

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

he tenido este problema en este momento. Lo arreglé por eliminando una propiedad llamada backgroundColor de la supervista de NSTextField.

Estaba usando backgroundColor solo 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 for subclassing!

6

hay una propiedad en el archivo .xib, en la ventana del generador de interfaz para el campo de texto, bajo el inspector de atributos

  1. Compruebe la pantalla Sorteos Antecedentes
  2. Seleccionar un color de fondo. Seleccione el color claro para el fondo transparente.

enter image description here

+0

Se corrigió mi problema mediante el fondo dibujado y se estableció el color de fondo para borrar el color –

2

A partir de 10.12 sólo se puede hacer:

let label = NSTextField(labelWithString: "HELLO")