首页 > 解决方案 > 如何使用自动布局在 UIScrollView 中为视图高度设置动画?

问题描述

AUIScrollView包含三个子视图UIView1UIView2UIView3

在此处输入图像描述

UIView1和的高度UIView3由使用自动布局约束的这些视图的内容定义。

的高度UIView2也由其子视图定义。但是应该可以切换UIView2.

Button按下时应折叠到UIView20 的高度(动画)。再次Button按下时UIView2应该动画回到原来的高度。

我该怎么做(在 Objsctiv-C 中)?

如果 的高度UIView2是固定的,那么将高度约束从 0 设置为固定值(例如 100)将没有问题,反之亦然。但由于高度不是固定的,而是取决于子视图,我不知道UIView2. 如何解决这个问题?

标签: iosuiviewautolayoutios-autolayout

解决方案


创建两个约束,一个用于高度,另一个用于顶部空间,例如在您的 .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;
}
}

推荐阅读