swift - UIStackView 子视图仅在 isHidden 设置为 false 时才动画
问题描述
我试图UIStackView
在动画块中隐藏/显示我的子视图,如下所示:
UIView.animate(withDuration: 0.3) {
self.unpairSensorButton.isHidden = isHidden
}
显示动画效果很好,但是当我尝试隐藏它时,它只是等待动画持续时间然后立即消失。知道为什么吗?
我曾尝试使用layoutIfNeeded()
并将其放入 DispatchQueue.main.async
块机器人中,但均无济于事。
解决方案
isHidden
属性本身是不可动画的。
UIStackView
当您隐藏某些子视图时,基本上会更改其内部约束以适应其大小。由于约束是动画的,你可以这样做:
unpairSensorButton.isHidden = isHidden
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
调用layoutIfNeeded()
动画块将为布局过程设置动画。
推荐阅读
- sql - 如何选择具有最高值的列
- jenkins - 是否可以在不同的 google kubernetes 引擎集群中运行 e2e 测试?
- php - 将值添加到 PHP 中第二个数组中每个匹配 ID 的第一个数组
- regex - 如何使用 1-M 关系和 regex_extract 在 Tableau 中使用计算联接
- javascript - Google Sheet Script,如何格式化电子邮件中的数据范围
- c# - 在画布上计算触摸和游戏对象位置的问题(屏幕空间-相机渲染模式)
- android - 通过 BottomNavigationView 和 Nav Graph 进行片段转换
- reactjs - React Native 元外观崩溃
- php - 如何使用正则表达式替换圆括号的任何括号?
- javascript - react-intl,异步翻译导入和 SSR