Я пытаюсь замаскировать один CALayer (Newsticker) с изображением другого слоя (stickerMask), например так:маска CALayer с другим CALayer
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)
}
Если добавить stickerMask сам по себе в моем «picturesView» слой, он правильно загружается на экран, а newSticker будет загружаться с соответствующим пользовательским цветом фона.
Моя проблема заключается в том, что как только вы применяете stickerMask к newSticker.mask, ничего не появляется вообще. Я попытался установить masksToBounds как false, так и true, но получить тот же результат.
Любые идеи о том, что я делаю неправильно?
Возможно, проблема связана с рамкой маски. Попробуйте использовать x = 0 и y = 0 для фрейма маски, и если он работает, вам просто нужно точно вычислить фрейм маски. – tikhop
tikhop, это было именно так! Большое спасибо. – jwade502