gpt4 book ai didi

ios - 使用 UIKit 的 donut 的 usesEvenOddFillRule 示例

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:04:26 28 4
gpt4 key购买 nike

我正在尝试创建一个简单的 donut ,并根据它的外观可能在其中添加渐变。我看过几个使用 Core Graphics 的例子。我想知道如何使用带有 usesEvenOddFillRule 的 UIKit 来完成它。到目前为止,我已经为内圈和外圈创建了两条基本路径,并将 usesEvenOddFillRule 设置为 YES。但是 donut 还是一路塞满了。我在这里遗漏了一些简单的东西吗?

CAShapeLayer *layer = (CAShapeLayer *)self.layer;
UIBezierPath *bezierPath = [UIBezierPath bezierPath];
UIBezierPath *outerCircle = [UIBezierPath bezierPathWithOvalInRect:CGRectInset(self.bounds, 4, 4)];
[outerCircle setLineWidth:2.0];
[bezierPath appendPath:outerCircle];

UIBezierPath *innerCircle = [UIBezierPath bezierPathWithOvalInRect:CGRectInset(self.bounds, 20, 20)];
[innerCircle setLineWidth:2.0];
[bezierPath appendPath:innerCircle];
bezierPath.usesEvenOddFillRule = YES;

layer.path = bezierPath.CGPath;
layer.fillColor = [UIColor orangeColor].CGColor;
layer.strokeColor = [UIColor orangeColor].CGColor;

最佳答案

您正在创建您的 UIBezierPath 就好了。

查看 fillRule CAShapeLayer 的属性。您应该将其设置为 kCAFillRuleEvenOdd

注意 CAShapeLayer 使用的是 CGPathRef 而不是 UIBezierPath,并且 CGPathRef 不携带填充规则信息。

关于ios - 使用 UIKit 的 donut 的 usesEvenOddFillRule 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24598045/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com