【问题标题】:Drawing a circular transparent view inside a UIView在 UIView 内绘制圆形透明视图
【发布时间】:2015-01-26 13:42:41
【问题描述】:

我正在尝试绘制一个透明的圆形 UIView。基于这个问题中的answer,我决定创建一个名为PartialTransparentViewUIView 子类来创建一个动画透明圆形视图。

我在这个子类的实现中的drawRect 方法中遇到问题,以使绘制透明视图实际上显示为圆形而不是默认的矩形。根据下面的代码和来自answer 的建议,我应该先设置上下文,然后再填充颜色。但是,即使在尝试了其他几种代码排列之后,它仍然无法正常工作。任何建议都会非常有帮助!

- (void)drawRect:(CGRect)rect
{

    CGContextRef context = UIGraphicsGetCurrentContext();
    [backgroundColor setFill];
    UIRectFill(rect);

    for (NSValue *holeRectValue in rectsArray) {

        CGRect holeRect = [holeRectValue CGRectValue];
        CGContextAddEllipseInRect(context, holeRect);
        CGRect holeRectIntersection = CGRectIntersection( holeRect, rect );

        [[UIColor clearColor] setFill];
        UIRectFill(holeRectIntersection);
    }

}

【问题讨论】:

    标签: ios objective-c uiview transparency


    【解决方案1】:

    您需要在擦除圈子之前更改混合模式:

    CGContextSetBlendMode(context, kCGBlendModeClear)
    

    【讨论】:

    • 感谢您的建议。我按照建议在CGContextAddEllipseInRect(context, holeRect); 之前添加了CGContextSetBlendMode(context, kCGBlendModeClear);,但它似乎不起作用。作为预防措施,我还尝试了在获得上下文后立即使用的地方,但它也不起作用。你能详细说明一下答案吗?谢谢!
    猜你喜欢
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多