2012-06-26 14 views
5

Stosuję obramowanie do NSView, ale jak mogę zmienić kolor obramowania. Użycie NSColor z setBorderColor pokazuje ostrzeżenie. Chcę używać Pomarańczowy Kolor obramowaniaKolor ramki NSView

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

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

Jak mogę ustawić inne kolory (bez czarnych i białych) w Granicy

Pozdrawiam, Haseena

+0

Jest to kategoria dla zestawu klas AppKit że robi konwersję z 'NSColor' do' CGColor' tutaj: https: // istota .github.com/707921. Może warto spojrzeć. – Alladinian

+0

Musisz użyć 'NSBox', który jest podklasą' NSView' – onmyway133

Odpowiedz

6

trzeba konwertować do 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); 

Albo czy można wymagać 10.8+, użyj [aColor CGColor]

+0

zadziałało !! dzięki –

1

Można użyć NSBox, która jest podklasą NSView i zaprojektowane, aby rozwiązać te przypadki

let box = NSBox() 
box.boxType = .custom 
box.alphaValue = 1 
box.borderColor = NSColor.red 
box.borderType = .lineBorder 
box.borderWidth = 4 
Powiązane problemy