ios - 不一致的 UIStackview isHidden 动画
问题描述
我有以下动画,但我似乎无法弄清楚为什么它不能始终如一地工作。堆栈视图是一系列 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
任何帮助是极大的赞赏。
解决方案
推荐阅读
- java - 如何从输入中生成随机值?
- azure - 如何在 Azure 中从 GCP 设置类似的识别感知代理
- c# - 仅推断具有多个泛型类型的一种类型
- javascript - 变量可以用“this”关键字声明吗?
- xcode - Xcode 似乎在运行脚本构建阶段修改了 bash 脚本中的路径
- excel - ADODB with provider MSDAORA in Powershell
- javascript - 合并来自不同查询的数据而不重复
- sql - Postgres Group by like 模糊逻辑
- sql-server - TSQL XQuery 过滤器仅选择包含至少一个字符(或非数字)的节点
- firebase - 托管在firebase中的React路由器应用程序,子路由返回404