【问题标题】:CABasicAnimation doesn't trigger in viewWillAppearCABasicAnimation 不会在 viewWillAppear 中触发
【发布时间】:2012-05-14 23:26:44
【问题描述】:

我在“viewA”的 viewWillAppear 方法中有一个 CABasicAnimation。 当我按下 viewA 中的按钮转到 viewB 然后返回 viewA viewWillAppear(viewA)中的 CABasicAnimation 可以正常工作。

但是,当我从 viewA 转到 viewB 时,在 viewB 中我通过按下主页按钮退出应用程序并返回应用程序,在我按下后退按钮后 viewA 的 viewWillAppear 中的 CABasicAnimation 不会触发在视图中 B.

有趣的是,我在 viewWillAppear 中也有一个动画块,并且在这种情况下触发没有任何问题。所以viewWillAppear方法被触发了,只是CABasicAnimation在辞职进入应用后第一次不起作用。

- (void) viewWillAppear:(BOOL)animated {

CAMediaTimingFunction *customTimingFunction;
    customTimingFunction=[CAMediaTimingFunction functionWithControlPoints: 0.5f :0.01f :0.1f : 1.f];

    CABasicAnimation *buttonAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation"];

    buttonAnimation.fromValue=[NSValue valueWithCGPoint:CGPointMake(0,-600)];
    buttonAnimation.toValue=[NSValue valueWithCGPoint:CGPointMake(0,0)];
    buttonAnimation.duration = 1;
    buttonAnimation.removedOnCompletion = NO;
    buttonAnimation.fillMode = kCAFillModeForwards;
    buttonAnimation.timingFunction = customTimingFunction;
    [button.layer addAnimation:buttonAnimation forKey:@"transform.translation"];

}

【问题讨论】:

  • 我找到的一个解决方案是将代码放在 viewDidAppear 中。但是,我认为动画触发有点太晚了,因为它在 viewDidAppear 方法中。理想情况下,我希望它出现在 viewWillAppear 中。

标签: objective-c ios viewwillappear cabasicanimation


【解决方案1】:

我找到了解决方案。如果我 change buttonAnimation.removedOnCompletion = NO;change buttonAnimation.removedOnCompletion = YES; 它每次都会触发。即使在辞职并进入应用程序之后。

【讨论】:

    【解决方案2】:

    我遇到了同样的情况,动画没有开始。使用此处的代码: https://github.com/akaabe/HamburgerButton/blob/master/HamburBtn.m 并调用 viewDidAppear toggleAnimation。唯一对我有用的情况是延迟使用 performSelector。

    【讨论】:

    • 在 applyCustomAnimation 中改为 modelLayer 有帮助
    猜你喜欢
    • 2015-09-19
    • 2014-03-25
    • 2012-06-03
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多