【问题标题】:iOS: Mask a UIImage using UIBezierPathiOS:使用 UIBezierPath 屏蔽 UIImage
【发布时间】:2011-08-15 23:05:11
【问题描述】:

我正在尝试对图像进行遮罩,以便只给它两个圆角。使用我拥有的代码,它只是在图像上添加了白色蒙版,但似乎没有应用它。我需要做些什么来掩盖图像角落?

CAShapeLayer *maskLayer = [CAShapeLayer layer];
UIBezierPath *roundedPath = [UIBezierPath bezierPathWithRoundedRect:maskLayer.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(16.f, 16.f)];    
maskLayer.fillColor = [[UIColor whiteColor] CGColor];
maskLayer.backgroundColor = [[UIColor clearColor] CGColor];
maskLayer.path = [roundedPath CGPath];

// Add mask
self.imageView.layer.mask = maskLayer;

【问题讨论】:

    标签: iphone objective-c ios uiimage


    【解决方案1】:

    Round two corners in UIView

    如上述链接问题中所述,您可能需要在应用其掩码之前从层次结构中删除视图。

    [self.imageView removeFromSuperview];
    self.imageView.layer.mask = maskLayer;
    [self.view addSubview:self.imageView];
    

    另外,您的maskLayer 没有bounds。您需要将其设置为您要屏蔽的视图的frame(或bounds)。

    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = self.imageView.frame;
    

    【讨论】:

    • 请阅读 Apple 的文档。我将从UIImageCGImage 开始,这是UIImage 中的底层图像对象。您会看到在CGImage 中有使用掩码创建图像的函数,然后是UIImage 构造函数,它将您的新CGImage 作为图像。
    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2019-07-13
    • 2015-09-05
    相关资源
    最近更新 更多