6

我做了一些研究,但我得到的所有答案都是针对 iOS 的,如何在 OSX 应用程序中围绕 NSImage 绘制彩色边框?我尝试使用 NSImage 的 imageView 属性来设置它的边框宽度和颜色,但它似乎没有工作......

任何形式的帮助都非常感谢!

4

4 回答 4

13

在不创建子类的情况下尝试这样也是可能的。您也可以相应地设置宽度和半径:-

[imgView setWantsLayer:YES];
imgView.layer.borderWidth = 1.0;
imgView.layer.cornerRadius = 8.0;
imgView.layer.masksToBounds = YES;
CGColorRef color = CGColorRetain([NSColor colorWithCalibratedRed:0 green:100 blue:0 alpha:0.5f].CGColor);
[imgView.layer setBorderColor:color];
于 2013-10-29T06:51:31.157 回答
6

您可以继承 NSView 并执行以下操作:

- (void)drawRect:(NSRect)dirtyRect
{
    [[NSColor orangeColor] set];

    NSBezierPath *path = [NSBezierPath bezierPath];
    [path appendBezierPathWithRoundedRect:outerFrame xRadius:5 yRadius:5];
    [path setLineWidth:4.0];
    [path stroke];
}

当然,根据您是否需要圆角来更改半径值。

于 2013-10-28T21:28:07.313 回答
1

斯威夫特 3中:

imagePreview.layer!.borderWidth = 10.0
imagePreview.layer!.cornerRadius = 8.0
imagePreview.layer!.masksToBounds = true
let color: CGColor = NSColor.blue.cgColor
imagePreview.layer!.borderColor = color
于 2016-06-11T14:45:34.293 回答
0

迅速:_

override func draw(_ dirtyRect: NSRect) {
    // Draw Border
    borderColor.set()
    let borderPath = NSBezierPath(rect: dirtyRect)
    borderPath.lineWidth = 2.0
    borderPath.stroke()
}
于 2017-09-16T00:11:23.627 回答