私は次のようにUIStackViewのサブビューを非表示にしようとしています:
UIViewPropertyAnimator.runningPropertyAnimator(withDuration: 2.0,
delay: 0, options: [.curveEaseOut], animations: {
self.label.isHidden = true
self.label.alpha = 0.0
self.stackView.layoutIfNeeded()
})
ただし、このコードを使用すると、ラベルはすぐに消えます。これは、折りたたみに必要なisHidden
をtrueに設定したためと考えられます。
UIStackViewのサブビューをアニメーションで非表示にして折りたたむ方法はありますか?または、UIStackViewをまったく使用しない方が良いでしょうか?
animateKeyframes
でシンプルなソリューションを使用してアルファをフェードしてから非表示にすることができます。これにより、必要なものが得られると思います。1秒後と0.8秒後にフェードします。
// showLabelはBoolであり、ステータスを処理してファイルで宣言します
@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
}
})
}