繁体   English   中英

使用animateWithDuration执行所有动画时出现问题

[英]Trouble executing all animation's using animateWithDuration

我的动画出现了一些问题。 预期的结果是, UIButton都应移动到其位置,并且一旦到达其位置,就必须巧妙地向上和向下摆动,以模拟到达其蹦极弦的尽头。 我获得的结果是,除了振荡之外,每个动画都可以完美执行。 为什么是这样? (我所指的振荡动画当然是spring animateWithDuration方法。

- (void)viewDidLoad 
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    _orText.alpha = 0;

    //Email login button properties
    _emailLoginForwardButton.layer.cornerRadius = _emailLoginForwardButton.frame.size.width / 2;
    self.emailLoginForwardButton.layer.borderWidth = 1.5f;
    self.emailLoginForwardButton.layer.borderColor = [UIColor whiteColor].CGColor;
    [self.emailLoginForwardButton setImageEdgeInsets:UIEdgeInsetsMake(7, 7, 7, 7)];
    _emailLoginForwardButton.frame = CGRectMake(77, 700, 40, 40);
    [UIView animateWithDuration:0.5
                     animations:^
     {
         _emailLoginForwardButton.frame = CGRectMake(77, 470, 40, 40);
     }
                 completion:^(BOOL finished)
 {
     [UIView animateWithDuration:0.3
                           delay:0.6
          usingSpringWithDamping:0.2
           initialSpringVelocity:0.4
                         options:0
                      animations:^(void){}
                      completion:^(BOOL finished)
      {
          _orText.text = @"or";

          [UIView animateWithDuration:0.4
                           animations:^
                           {
                               [_orText setAlpha:1];
                           }
          ];
      }
      ];
 }
 ];

//Google login button properties
_googleLoginForwardButton.layer.cornerRadius =_googleLoginForwardButton.frame.size.width / 2;
self.googleLoginForwardButton.layer.borderWidth = 1.5f;
self.googleLoginForwardButton.layer.borderColor = [UIColor grayColor].CGColor;
_googleLoginForwardButton.frame = CGRectMake(257, 700, 40, 40);
[UIView animateWithDuration:0.5
                      delay:0.4
                    options:0
                 animations:^
 {
     _googleLoginForwardButton.frame = CGRectMake(257, 470, 40, 40);
 }
                 completion:^(BOOL finished)
 {
     [UIView animateWithDuration:0.3
                           delay:0.3
          usingSpringWithDamping:0.2
           initialSpringVelocity:0.4
                         options:0
                      animations:^
      {
      }
                      completion:^(BOOL finished)
      {
      }
      ];
 }
 ];
}
- (void)viewDidLoad {
    [super viewDidLoad];
    self.googleLoginForwardButtonBottomConstraints.constant = -100.0;//e.g
    self.emailLoginForwardButtonBottomConstraints.constant = -100.0;//e.g

    [UIView animateWithDuration:0.6
                          delay:0.6
         usingSpringWithDamping:0.2
          initialSpringVelocity:0.4
                        options:0
                     animations:^(void){
                         self.googleLoginForwardButtonBottomConstraints.constant = 40.0;//e.g
                         self.emailLoginForwardButtonBottomConstraints.constant = 40.0;//e.g
                         [self.view layoutIfNeeded];
                     }
                     completion:^(BOOL finished) {

                     }];
}

我已经运行了此代码及其工作。 希望对您有帮助。

[UIView animateWithDuration:1
                      delay:0.6
     usingSpringWithDamping:0.42
      initialSpringVelocity:0.1
                    options:0
                 animations:^(void)
                 {
                     _orText.text = @"or";

                     [UIView animateWithDuration:0.7
                                      animations:^
                      {
                          [_orText setAlpha:1];
                      }];

                     [UIView animateWithDuration:0.6
                                      animations:^
                      {
                          _emailLoginForwardButton.frame = CGRectMake(77, 470, 40, 40);
                      }];

                     [UIView animateWithDuration:0.6
                                      animations:^
                                      {
                                          _googleLoginForwardButton.frame = CGRectMake(257, 470, 40, 40);
                                      }
                     ];

                     [self.view layoutIfNeeded];
                 }
                 completion:^(BOOL finished) {

                 }];

这是我的解决方案,但是我想使用此代码做更多的事情。 我想使两个按钮以不同的间隔移动,并且由于某种原因,if语句在这里不起作用。 另外,我只想在发生其他动作时将其初始化,但仍然可以这样做,但我希望能够使它们在不同的时间移动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM