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;
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! 😒