Je crée transparent 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];
Et par conséquent, le texte a mauvaise mine. Si je règle la couleur de fond
self.myTextField.backgroundColor = [NSColor colorWithCalibratedRed:0.85 green:0.85 blue:0.85 alpha:1.0];
tout va bien J'ai aussi essayé avec drawsBackground = NO;
Savez-vous comment résoudre ce problème?
J'ai fini par utiliser CATextLayer
à la place de NSTextField
.
Le secret est de définir TOUTES LES TROIS de ces propriétés sur la variable NSTextField
...
myTextField.bezeled = NO;
myTextField.editable = NO;
myTextField.drawsBackground = NO;
À partir de 10.12, vous pouvez simplement faire:
let label = NSTextField(labelWithString: "HELLO")
Je suis venu ici aussi à la recherche de cet arrière-plan et j'ai le fond pour me donner un gris transparent. La clé est de ne pas avoir de lunette. Mon code ci-dessous:
NSTextField *yourLabel = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, width , height * 1.0/3.0)];
yourLabel.editable = false;
yourLabel.bezeled = false;
[yourLabel setTextColor:[NSColor blackColor]];
[yourLabel setBackgroundColor:[NSColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:0.1]];
Pour être complet, j’avais la largeur et la hauteur plus tôt parce qu’ils s’utilisaient souvent pour la mise en page:
height = self.window.frame.size.height;
width = self.window.frame.size.width;