iOS 来自 UIImage/CGImage 的图层蒙版?

iOS layer mask from UIImage/CGImage?

我有以下图片:

在帧大小完全相同的 UIImageView 上,我想显示除红色填充以外的所有内容。

        let mask = CALayer()
        mask.contents = clippingImage.CGImage
        self.myImageView.layer.mask = mask

我原以为当蒙版时黑色会透出来,但当我设置蒙版时整个视图都被清除了。这里发生了什么?

从图像创建遮罩时,您使用 Alpha 通道,而不是任何 RGB 通道。即使您的蒙版是黑色的,您也需要将其 Alpha 值设置为 0,因为蒙版只关注 Alpha 通道。就 RGBA 而言,任何默认的黑色都是 [0,0,0,255]。如果加载RGB,它当然会将其转换为A = 1的RGBA。