Когда я пытаюсь скопировать объект из созданного мной пользовательского класса слоя, созданная копия совпадает с оригиналом, но оригинал теряет свою маску.
Чтобы выполнить копирование, я создалрасширение моего пользовательского класса:
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
, а затем применяет его в качестве маски к копии, но результат тот же.
Любые указатели будут с благодарностью!
Заранее спасибо за ваше время!