2012-06-26 21 views
5

Estoy aplicando un borde a NSView, pero ¿cómo puedo cambiar el color de borde? El uso de NSColor con setBorderColor muestra una advertencia. Quiero usar el color anaranjado en BorderNSView Color de borde

[self setWantsLayer:YES]; 
    self .layer.masksToBounds = YES;  
    self.layer.borderWidth  = 6.0f ; 

    [self.layer setBorderColor:CGColorGetConstantColor(kCGColorBlack)]; 

¿Cómo se establecen otros colores (con exclusión de blanco y negro) en Border

Saludos, Haseena

+0

hay una categoría para AppKit que hace una conversión de '' NSColor' a CGColor' aquí: https: // GIST .github.com/707921. Vale la pena echarle un vistazo. – Alladinian

+0

Tienes que usar 'NSBox', que es una subclase de' NSView' – onmyway133

Respuesta

6

Es necesario para convertir a un 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); 

O si se puede requerir 10.8+, utilice [aColor CGColor]

+0

funcionó !! Gracias –

1

Puede utilizar NSBox, que es una subclase de NSView y diseñado para manejar estos casos

let box = NSBox() 
box.boxType = .custom 
box.alphaValue = 1 
box.borderColor = NSColor.red 
box.borderType = .lineBorder 
box.borderWidth = 4 
Cuestiones relacionadas