Ios 如何使用autolayout在UIScrollView中设置视图高度动画?
Ios 如何使用autolayout在UIScrollView中设置视图高度动画?,ios,uiview,autolayout,ios-autolayout,Ios,Uiview,Autolayout,Ios Autolayout,uicrollview包含三个子视图:UIView1、UIView2和UIView3 UIView1和UIView3的高度由使用自动布局约束的这些视图的内容定义 UIView2的高度也由其子视图定义。但是,应该可以切换UIView2的可见性 按下按钮时,UIView2应折叠到0高度(动画)。再次按下按钮时,应将UIView2设置为动画,使其恢复到原始高度 如何(在ObjActiv-C中)执行此操作? 如果UIView2的高度是固定的,则将高度constraint从0设置为固定值(例如100)或
uicrollview
包含三个子视图:UIView1
、UIView2
和UIView3
UIView1
和UIView3
的高度由使用自动布局约束的这些视图的内容定义
UIView2
的高度也由其子视图定义。但是,应该可以切换UIView2
的可见性
按下按钮
时,UIView2
应折叠到0高度(动画)。再次按下按钮
时,应将UIView2
设置为动画,使其恢复到原始高度
如何(在ObjActiv-C中)执行此操作?
如果
UIView2
的高度是固定的,则将高度constraint从0设置为固定值(例如100)或从0设置为固定值是没有问题的。但由于高度不是固定的,而是取决于子视图,因此我不知道UIView2
的确切高度如何解决此问题?您可以创建两个约束
1-视图2高度约束=0=>优先级=999
2-子视图3对视图2的底部约束=>priority=1000
如果要隐藏视图2,请切换优先级并设置动画一个简单而直接的解决方案是将UIView1、UIView2和UIView3包含在UIStackView中 然后,可以直接在UIView动画块内设置这3个视图中任一视图的隐藏属性,以设置这些视图的外观动画
[UIView animateWithDuration:0.25 animations:^{
self.secondView.hidden = YES;
}];
参考:创建两个约束,一个用于高度,另一个用于顶部空间,如.h文件中的以下内容
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *view2HeightConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *view2TopSpaceFromView1;
在you.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;
}
}