Ketika saya mencoba menyalin objek dari Kelas Lapisan Kustom yang saya buat, salinan yang dibuat cocok dengan aslinya, tetapi yang asli kehilangan topengnya.
Untuk melakukan penyalinan, saya telah membuat ekstensi kelas khusus saya:
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
}
}
Saya kemudian membuat salinannya dengan cara ini:
let originalLayer = CustomLayer()
...
view.layer.addSublayer(originalLayer)
let copyLayer = originalLayer.copy() as! CustomLayer
view.layer.addSublayer(copyLayer)
Seperti yang dapat Anda lihat dari tangkapan layar, lapisan asli tidak lagi memiliki topeng sementara salinannya memilikinya.
Saya telah menggunakan metode ini di masa lalu untuk Kelas Lapisan Kustom lainnya dan saya belum pernah mengalami masalah ini sampai sekarang. Saya juga telah mencoba membuat CALayer
yang merupakan turunan dari self.mask
dan kemudian menerapkannya sebagai topeng pada salinannya, tetapi hasilnya sama.
Setiap petunjuk akan sangat dihargai!
Terima kasih sebelumnya atas waktu Anda!