Несовместимый UIStackview - скрытая анимация - PullRequest
0 голосов
/ 06 октября 2018

У меня есть следующая анимация, и я не могу понять, почему она не работает последовательно.Представление стека - это серия подпредставлений UILabel, в которых я хочу анимировать: скрыть все метки без текста и показать все, что нужно.Я попытался использовать UIView.beginAnimations("Animation", nil) и UIView.commit() вокруг всего этого (когда я структурировал его как несколько блоков анимации).Я пытался поместить их в отдельные блоки, но я не могу понять, почему это не работает.

При печати внутри блока анимации отображается:

<UILabel: 0x7fa237408b90; frame = (0 0; 195 130); text = '1'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x6000004645a0>>
<UILabel: 0x7fa2374088a0; frame = (195 65; 0 0); text = '0'; hidden = YES; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x600000464460>>
hide <UILabel: 0x7fa2374085b0; frame = (195 65; 0 0); text = ''; hidden = YES; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x600000464190>>
hide <UILabel: 0x7fa2374082c0; frame = (195 65; 0 0); text = ''; hidden = YES; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x600000464050>>
hide <UILabel: 0x7fa237407e50; frame = (195 65; 0 0); text = ''; hidden = YES; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x600000459270>>
hide <UILabel: 0x7fa237407b60; frame = (195 65; 0 0); text = ''; hidden = YES; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x60000045a990>>

Я также пытался сделать это в основном потоке как внутри блока анимации, так и снаружи.Внутри блока он отменяет анимацию, а вне блока это не имеет значения.Также, если вы закомментируете view.isHidden = false, то часть, которая делает вид не скрытым, работает должным образом.

UIView.animate(withDuration: 0.2){[unowned self] in
            self.stackView.arrangedSubviews.forEach{(view) in
                if((view as! UILabel).text == ""){
                    print("hide \(view)")
                    view.isHidden = true
                }else{
                    print(view)
                    view.isHidden = false
                }
            }
        }//End of animation

Любая помощь будет принята с благодарностью.

...