web-dev-qa-db-fra.com

UIStackView - masquer et réduire la sous-vue avec animation

J'essaie de masquer la sous-vue d'UIStackView comme ceci:

UIViewPropertyAnimator.runningPropertyAnimator(withDuration: 2.0, 
      delay: 0, options: [.curveEaseOut], animations: {
    self.label.isHidden = true
    self.label.alpha = 0.0
    self.stackView.layoutIfNeeded()
})

Cependant, l'étiquette disparaît instantanément avec l'utilisation de ce code. Je soupçonne que cela est dû à la définition de isHidden sur true, ce qui est requis pour l'effondrement.

Existe-t-il un moyen de masquer et de réduire le sous-dossier d'UIStackView avec une animation? Ou serait-il préférable de ne pas utiliser du tout UIStackView?

7
Andrey Gordeev

Vous pouvez simplement utiliser une solution simple avec animateKeyframes pour atténuer l'alpha, puis masquer, je pense que cela vous donnera ce dont vous avez besoin.

// showLabel est un booléen pour gérer le statut, déclarez-le chez vous

@IBAction func toggleStackLabelTapped(_ sender: UIButton) {

    showLabel = !showLabel

    UIView.animateKeyframes(withDuration: 1, delay: 0, options: .calculationModeLinear, animations: {
        UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: 0.8) {
            self.label.alpha =  (self.showLabel) ? 1 : 0
        }
        UIView.addKeyframe(withRelativeStartTime: 0.8, relativeDuration: 1) {
            self.label.isHidden = !self.showLabel
        }

    })
}
0
Abdelahad Darwish