Когда я пытаюсь скопировать объект из созданного мной пользовательского класса слоев, созданная копия соответствует оригиналу, но оригинал теряет свою маску.
Чтобы выполнить копирование, я создал расширение своего пользовательского класса:
extension CustomLayer: NSCopying {
func copy(with zone: NSZone? = nil) -> Any {
let clone = CustomLayer()
// Type Properties
clone.colorFill = self.colorFill
clone.colorMap = self.colorMap
clone.radius = self.radius
// LayerProperties
clone.frame = self.frame
clone.cornerRadius = self.cornerRadius
clone.opacity = self.opacity
clone.position = self.position
clone.shadowRadius = self.shadowRadius
clone.shadowColor = self.shadowColor
clone.shadowOffset = self.shadowOffset
clone.shadowOpacity = self.shadowOpacity
clone.shadowPath = self.shadowPath
clone.mask = self.mask
return clone
}
}
Затем я создаю копию следующим образом:
let originalLayer = CustomLayer()
...
view.layer.addSublayer(originalLayer)
let copyLayer = originalLayer.copy() as! CustomLayer
view.layer.addSublayer(copyLayer)
Как вы можете видеть на скриншоте, исходный слой больше не имеет маски, в то время как у копии она есть.
Я использовал этот метод в прошлом для других пользовательских классов слоев, и я никогда не сталкивался с этой проблемой до сих пор. Я также попытался создать CALayer
, который является экземпляром self.mask
, а затем применил его как маску к копии, но результат тот же.
Любые указатели будут очень признательны!
Спасибо заранее за ваше время!