2012-06-26 5 views
5

테두리를 NSView에 적용하고 있는데 bordercolor를 어떻게 바꿀 수 있습니까? setBorderColor에서 NSColor를 사용하면 경고가 표시됩니다. 내가 테두리에NSView 테두리 색상

감사 (흑백 제외) 다른 색상을 설정할 수 있습니다

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

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

어떻게 국경에 오렌지 컬러를 사용하려면, Haseena

+0

을 처리하기 위해 NSView의 서브 클래스는 NSBox를 사용하여 설계 할 수 있습니다 : https : //로 요점 .github.com/707921. 그것은 가치가 있을지도 모른다. – Alladinian

+0

'NSView'의 하위 클래스 인 NSBox를 사용해야합니다. – onmyway133

답변

6

당신은 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); 

아니면 10.8+을 필요로 할 수있는 경우, 사용 [aColor CGColor]

+0

이 작동했습니다 !! 감사 –

1

현재 CGColor``에 NSColor``에서 변환을 수행 AppKit의에 대한 범주가 있습니다 이러한 경우

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