iOS版:战平UIBezierPath bezierPathWithOvalInRect明确的圈子:

2019-10-18 11:43发布

在我UITableViewController的细胞,我想显示在一个数字的圆圈。 我使用UIBezierPathbezierPathWithOvalInRect:画圆。

不幸的是,虽然我可以设置fill颜色为clearColor ,则未使用部分CGRect传递给bezierPathWithOvalInRect:是黑色的。

如何摆脱黑色区域的产生?

参考部分截图:

(我最终希望得到的圆圈内,这个数字)

码:

LTTTableViewCell:

- (void)awakeFromNib {
    [super awakeFromNib];

    // Create a square view using the height of the cell
    CGRect positionFrame = CGRectMake(0, 0, self.bounds.size.height, self.bounds.size.height);
    LTTDrawBallView *drawBallView = [[LTTDrawBallView alloc] initWithFrame:positionFrame];
    [self.contentView addSubview:drawBallView];
}

LTTDrawBallView:

- (void)drawRect:(CGRect)rect
{
    // Create a new rect with some padding  
    // + create a circle from this new rect:
    CGRect box = CGRectInset(self.bounds, self.bounds.size.width * 0.1f, self.bounds.size.height * 0.1f);
    UIBezierPath *ballBezierPath = [UIBezierPath bezierPathWithOvalInRect:box];
    [[UIColor whiteColor] setStroke];
    [[UIColor greenColor] setFill]; // Green here to show the black area
    [ballBezierPath stroke];
    [ballBezierPath fill];
    [self setBackgroundColor:[UIColor clearColor]]; // Happens with and without this line
}

Answer 1:

在你LTTDrawBallView的init方法,包括代码:

self.opaque = NO;
self.backgroundColor = [UIColor clearColor];


文章来源: iOS: Draw clear circle with UIBezierPath bezierPathWithOvalInRect: