【问题标题】:CABasicAnimation causes freezeCABasicAnimation 导致冻结
【发布时间】:2014-02-18 19:27:20
【问题描述】:

我有这个代码:

- (void) animationErreur {
CABasicAnimation* fade = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
fade.fromValue = (id)[UIColor colorWithRed:1.0f green:0.0f blue:0.0f alpha:0.0f];
fade.fromValue = (id)[UIColor redColor].CGColor;
fade.toValue = (id)[UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.0f];
[fade setDuration:1];
[self.topBar.layer addAnimation:fade forKey:@"fadeAnimation"];
}

每次我调用它时,它都会起作用,但是如果我在动画期间单击视图,它就会崩溃。我在课堂上添加了 quartcore 框架。当我单击按钮时会调用此代码。

有什么想法吗?

【问题讨论】:

  • 什么是崩溃错误
  • 我在调试器上只有 (lldb)
  • 还有线程 1:EXC_BAD_ACCESS (code=1, address = 0x0)
  • 在 Xcode 中添加一个异常断点,因此您应该能够提供有关该错误的更多信息。关于如何做到这一点,请参阅stackoverflow.com/questions/1798709/…
  • [fade setDuration:1];你将持续时间设置为 1 你需要设置 FLT_MAX 然后它不会冻结

标签: ios iphone objective-c


【解决方案1】:
fade.toValue = (id)[UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.0f].CGColor;

您必须在 toValue 行的末尾添加.CGColor

- (void) animationErreur {
    CABasicAnimation* fade = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
    fade.fromValue = (id)[UIColor redColor].CGColor;
    fade.toValue = (id)[UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.0f].CGColor;
    [fade setDuration:1];
    [self.topBar.layer addAnimation:fade forKey:@"fadeAnimation"];
}

【讨论】:

  • 谢谢它的工作!我试图添加一个异常断点,但通过添加 CGColor 问题解决了。谢谢大家的帮助。
【解决方案2】:

尝试使您的动画对象全局化。 EXE_Bad_ACCESS 通常是由于 arc 中的对象不可达造成的。

【讨论】:

    猜你喜欢
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2018-10-06
    相关资源
    最近更新 更多