7

我正在为 NSView 应用边框,但如何更改边框颜色。将 NSColor 与 setBorderColor 一起使用会显示警告。我想在边框中使用橙色

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

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

如何在边框中设置其他颜色(不包括黑色和白色)

问候,哈西娜

4

3 回答 3

7

您需要转换为 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]

于 2012-06-26T14:59:24.700 回答
7

您可以使用NSBox,它是一个子类,NSView旨在处理这些情况

let box = NSBox()
box.boxType = .custom
box.alphaValue = 1
box.borderColor = NSColor.red
box.borderType = .lineBorder
box.borderWidth = 4
于 2017-06-29T12:42:31.713 回答
1

哇...这些天这么简单。创建时在您的 NSView 中:

self.wantsLayer = YES;
self.layer.borderWidth = 1;

然后在drawRect(以便您可以响应暗模式或其他外观的更改)设置边框颜色....并且不要忘记使用响应外观更改的系统颜色或您在支持所有外观的资产目录中定义的颜色你支持。

-(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];
}

就是这么简单。

于 2019-11-12T11:33:34.673 回答