用另一个卡莱尔面具卡拉耶



我正在尝试用另一层(stickerMask)的图像掩盖一个CALayer(newSticker),如下所示:

    func placeSticker(location: CGPoint) {
    let stickerMask = CALayer()
    stickerMask.contents = UIImage(contentsOfFile:NSBundle.mainBundle().resourcePath!.stringByAppendingPathComponent("brush(self.stickerSelected).png"))!.CGImage
    stickerMask.frame = CGRect(x: location.x * 100, y: location.y * 100, width: 200, height: 200)
    let newSticker = CALayer()
    newSticker.backgroundColor = UIColor(red: self.red, green: self.green, blue: self.blue, alpha: 1.0).CGColor
    newSticker.frame =
        CGRect(x: location.x * 100, y: location.y * 100, width: 200, height: 200)
    newSticker.mask = stickerMask
    self.picturesView.layer.addSublayer(newSticker)
}

如果我在我的"图片视图"图层中单独添加贴纸蒙版,它会正确加载到屏幕上,newSticker 将加载相应的自定义背景颜色。

我的问题是,一旦您将 stickerMask 应用于 newSticker.mask,什么也不会出现。我尝试将掩码ToBounds设置为假和真,但得到相同的结果。

知道我做错了什么吗?

问题在于掩码的帧计算。

确保当某些图层是蒙版时,您应该计算蒙版的帧,就像它只是超级图层的子图层一样。

换句话说,遮罩的坐标系等于超图层坐标系。

最新更新