当更改Ul的属性时,animateWithDuration不工作

时间:2014-11-07 06:02:46

标签: ios objective-c

对不起我的英语,我在制作视图动画时遇到了一些麻烦,

我有一个按钮,我想在按下按钮时移动pushView。

这是我的代码:

- (IBAction)buttonDidClicked:(id)sender {

[UIView animateWithDuration:0.3
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseIn
                 animations:^{

                     CGRect frame = self.greenView.frame;
                     frame.origin.x -= 100;
                     self.someView.frame = frame;

                 } completion:^(BOOL finished) {

                 }];
}

这里的工作非常好。

但是当我改变一些UI的属性,比如label.text,

像那样:

- (IBAction)buttonDidClicked:(id)sender {

[UIView animateWithDuration:0.3
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseIn
                 animations:^{

                     CGRect frame = self.greenView.frame;
                     frame.origin.x -= 100;
                     self.greenView.frame = frame;

                 } completion:^(BOOL finished) {

                     int i = [self.label.text intValue];
                     i++;

                     self.label.text = [NSString stringWithFormat:@"%d", i];
                 }];
}

pushView将移回到第一位。

我有一个视频来解释:http://youtu.be/eJ9CaTkSaPU

错误恰好发生在iOS 8.1中,

在iOS 7.1或之前它会正常工作。

如何解决问题?

非常感谢

1 个答案:

答案 0 :(得分:0)

回答我的自我,

问题是由于自动布局,

当我禁用自动布局时,

问题得以解决。

datail可以引用的内容越多:Animation Blocks resets to original position after updating text