Настройка CAEmitterLayer zPosition на подклассе UILabel не имеет никакого эффекта

Моя цель: создать UILabel с подклассами, который отображает CAEmitterLayer за текстом меток.

Моя проблема: CAEmitterLayer всегда перед текстом метки, независимо от того, какой метод я использую для добавления эмиттера.

Мои шаги предприняты: Как вы можете видеть из моего кода ниже, я добавил UIView в UILabel (называемую AddedEmitterView). Затем я добавляю излучатель к этому представлению, пытаясь разместить излучатель за текстом. Эмиттер обнаруживается очень хорошо, однако я не могу получить текст впереди! Независимо от того, какую настройку zPosition я настраиваю (как показано в моем коде ниже), излучатель всегда находится спереди. (как показано на скриншоте!)

class EmitterLabel: UILabel {
    var addedEmitterView = UIView()
    override func awakeFromNib() {
        super.awakeFromNib()
        createEmitter()
        addEmitterView()
    }
    func createEmitter() {
        let emitter = Emitter.get(image: UIImage(named: "emoji")!)
        emitter.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2)
        emitter.emitterSize = CGSize(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
        emitter.zPosition = -1
        addedEmitterView.layer.insertSublayer(emitter, at: 0)
    }
    func addEmitterView() {
        addedEmitterView.frame = self.bounds
        addedEmitterView.layer.zPosition = -1
        self.addSubview(addedEmitterView)
    }
}

Неправильная zPosition на CAEmitterLayer

Можно ли разместить эмиттер за текстом UILabel?

Большое спасибо, дайте мне знать, если вам нужна дополнительная информация!

0 ответов

Другие вопросы по тегам