我正试图用另一层(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)
}
如果我在“picturesView”图层中单独添加了stickerMask,它会正确加载到屏幕上,newSticker会加载相应的自定义背景颜色。
我的问题是,一旦你将stickerMask应用到newSticker.mask,就什么都没有了。我已经尝试将masksToBounds设置为false和true,但得到相同的结果。
我做错了什么想法?
答案 0 :(得分:1)
问题在于掩码的帧计算。
确保当某些图层是蒙版时,您应该计算蒙版的帧,就好像它只是超层的子图层一样。
换句话说,掩模的坐标系等于超层坐标系。