在MacOS上的椭圆形CAShapeLayer周围绘制边框

时间:2020-03-05 14:54:47

标签: objective-c macos io core-graphics

我需要显示一个带有预定义fillColor和1px borderColor的椭圆形层。
以下是代码:

    CGRect r = CGRectMake(28, self.bounds.size.height - 5 - 12, 12.0, 12.0);
    NSBezierPath *path = [NSBezierPath bezierPathWithOvalInRect:r];

    NSColor *fillColor = [NSColor colorWithRed:255.0/255.0 green:193.0/255.0 blue:47.0/255.0 alpha:1.0f];
    NSColor *borderColor = [NSColor colorWithRed:226.0/255.0 green:70.0/255.0 blue:84.0/255.0 alpha:1.0f];

    minimizeButtonLayer = [CAShapeLayer layer];
    minimizeButtonLayer.path = path.CGPath;
    minimizeButtonLayer.fillColor = fillColor.CGColor;
    minimizeButtonLayer.borderColor = borderColor.CGColor;
    minimizeButtonLayer.borderWidth = 1.0;

椭圆形正确显示,但没有任何边框。
为什么?请帮助我。

P.S。请注意,path.CGPath来自NSBezierPath类别。

1 个答案:

答案 0 :(得分:0)

我通过用strokeColor替换borderColor来解决了这个问题

minimizeButtonLayer.borderColor = borderColor.CGColor;

使用

minimizeButtonLayer.strokeColor = borderColor.CGColor;