web-dev-qa-db-fra.com

Fond transparent NSTextField

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. enter image description here 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 bienenter image description here J'ai aussi essayé avec drawsBackground = NO; Savez-vous comment résoudre ce problème?

38
pawelropa

J'ai fini par utiliser CATextLayer à la place de NSTextField.

0
pawelropa

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;
59
Alex Gray

Il y a une propriété dans le fichier .xib, dans la fenêtre du générateur d'interface pour le champ de texte, sous l'inspecteur d'attributs

  1. Vérifier le fond d'affichage
  2. Sélectionnez une couleur de fond. Sélectionnez une couleur claire pour un fond transparent.

 enter image description here

12
Gamma-Point

À partir de 10.12, vous pouvez simplement faire: 

let label = NSTextField(labelWithString: "HELLO")
3
Mark Bridges

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;
0
Symanski