7
votes

Nsview Border Color

J'applique une bordure à Nsview mais comment puis-je modifier la limitecolor. L'utilisation de NSColor avec SetBorderColor montre un avertissement. Je veux utiliser la couleur orange dans la bordure xxx

Comment puis-je définir d'autres couleurs (à l'exclusion du noir et du blanc) dans la frontière

Cordialement, Haseena


2 commentaires

Il existe une catégorie pour AppKit qui fait une conversion de nscolor vers cgColor ici: GIST.GITUB.COM/707921 . Cela pourrait valoir un coup d'oeil.


Vous devez utiliser nsbox , qui est une sous-classe de nsview


3 Réponses :


7
votes

Vous devez convertir en CGColorref

NSColor *orangeColor = [NSColor orangeColor];

// Convert to CGColorRef
NSInteger numberOfComponents = [orangeColor numberOfComponents];
CGFloat components[numberOfComponents];
CGColorSpaceRef colorSpace = [[orangeColor colorSpace] CGColorSpace];    
[orangeColor getComponents:(CGFloat *)&components];    
CGColorRef orangeCGColor = CGColorCreate(colorSpace, components);

// Set border
self.view.layer.borderColor = orangeCGColor;

// Clean up
CGColorRelease(orangeCGColor);


0 commentaires

7
votes

Vous pouvez utiliser nsbox , qui est une sous-classe de nsview et conçu pour gérer ces cas xxx


0 commentaires

1
votes

wow ... si simple ces jours-ci. Dans votre NSView lors de votre création:

-(void)drawRect:(NSRect)rect
{
    self.layer.borderColor = [NSColor systemGrayColor];
    // or color defined in Asset Catalog
    self.layer.borderColor = [NSColor colorNamed:@"BorderColor"].CGColor;
    [super drawRect:rect];
}


0 commentaires