ios - 如何使用自动布局在 UIScrollView 中为视图高度设置动画?
问题描述
AUIScrollView
包含三个子视图UIView1
:UIView2
和UIView3
。
UIView1
和的高度UIView3
由使用自动布局约束的这些视图的内容定义。
的高度UIView2
也由其子视图定义。但是应该可以切换UIView2
.
Button
按下时应折叠到UIView2
0 的高度(动画)。再次Button
按下时UIView2
应该动画回到原来的高度。
我该怎么做(在 Objsctiv-C 中)?
如果 的高度UIView2
是固定的,那么将高度约束从 0 设置为固定值(例如 100)将没有问题,反之亦然。但由于高度不是固定的,而是取决于子视图,我不知道UIView2
. 如何解决这个问题?
解决方案
创建两个约束,一个用于高度,另一个用于顶部空间,例如在您的 .h 文件中
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *view2HeightConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *view2TopSpaceFromView1;
在您的 .m 文件中创建如下所示的操作
- (IBAction)toggleButtonTapped:(id)sender {
UIButton *btn = (UIButton *)sender;
if ([btn isSelected])
{
[btn setSelected:false];
_view2HeightConstraint.constant = 45.0;
_view2TopSpaceFromView1.constant = 8.0;
}
else{
[btn setSelected:true];
_view2HeightConstraint.constant = 0.0;
_view2TopSpaceFromView1.constant = 0.0;
}
}
推荐阅读
- c++ - CUDA设备功能多重定义
- php - Symfony 4:尝试获取 / 时重定向到 /admin
- selenium - 使用 Python 和哪个工具实现 Flash 应用程序自动化
- postgresql - PSQLException:错误:列“attidentity”不存在
- python - dict.pop() 报异常keyerror
- git - Git - 在允许推送到分支之前需要合并来自 master 的提交
- android - Android 仪器测试在加载本机库时擦除共享首选项数据
- javascript - jQuery-confirm 防止在 callerElement.hide() 上滚动
- c# - 如何从具有配置的库中注册 api 控制器
- java - 在java中具有两个比较的空安全比较器