UIView没有动画约束变化

时间:2014-11-17 15:09:02

标签: objective-c animation

我对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];
                                          }];
                     }];

1 个答案:

答案 0 :(得分:0)

您想要在动画方法中更改UIView的属性而不是NSLayoutConstraint。即在UIView方法之前更改布局约束的常量,然后在动画方法中更改UIView的frame属性。

这样您就不需要调用layoutIfNeeded。