我对UIView方法有疑问:
+ (void)animateWithDuration:(NSTimeInterval)duration
animations:(void (^)(void))animations
completion:(void (^)(BOOL finished))completion
基本上我只是试图将高度约束常数设置为0,并且变化看起来像是在慢慢收缩......
我的代码如下:
[UIView animateWithDuration:0.7
animations:^{
//hide the Title
self.titleCellHeigthConstraint.constant = kLabelHeightZero;
[self.contentView layoutIfNeeded];
}
completion:nil];
不幸的是,它没有动画。它只是使所有更改都出现一点延迟(可能是方法中指定的0.7秒)。
现在我的问题是,是否有办法让UIView为变化设置动画?
提前致谢!
修改
奇怪的是,如果我以动画方式扭转变化,它就会按照我想要的方式完成。我正在使用的代码是:
//animate layout changes
[UIView animateWithDuration:0.7
animations:^{
//hide activity indicator and label
[self.activityIndicator stopAnimating];
[self.label setHidden:YES];
}
completion:^(BOOL arg0){
[UIView animateWithDuration:0.3
animations:^{
//show title label
self.titleCellHeigthConstraint.constant = kDefaultLabelHeight;
[self.contentView layoutIfNeeded];
}];
}];
答案 0 :(得分:0)
您想要在动画方法中更改UIView的属性而不是NSLayoutConstraint。即在UIView方法之前更改布局约束的常量,然后在动画方法中更改UIView的frame属性。
这样您就不需要调用layoutIfNeeded。