自定义animation属性返回NSNull?

只有一天的赏金!

你可以有一个自定义的animation属性工作与UIView animateWithDuration块语法?

我一直在为自定义CALayer上的自定义animation属性创build自己的隐式animation。

我已经设置了自定义UIView的背景层,并可以使用CATransaction来为自定义属性设置animation(在自定义示例中,我正在使用自定义属性circleColor更改圆的颜色)。

我知道UIView通过从UIViewactionForLayer:forKey: selector方法返回NSNull来closuresanimation属性。 然后,当属性包装在UIView animateWithDurationUIView将返回animation

所以这将与backgroundColor ,不透明等工作。但是, 我的自定义属性circleColor仍然返回NSNull

我希望我为这个问题提供了足够的背景。 谢谢!

所以这个问题已经有很长一段时间了,我认为这是不可能的。 下面的代码显示了我将如何打开块中检测到的自定义属性。 这个方法在UIView中被覆盖。

 - (id<CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event { NSLog(@"%s - event: %@", __PRETTY_FUNCTION__, event); id<CAAction> action = [super actionForLayer:layer forKey:event]; if ([event isEqualToString:@"circleColor"] && (nil == action || (id)[NSNull null] == action)) { return [CABasicAnimation animationWithKeyPath:event]; } return action; } 

该代码允许您在UIView块内进行animation制作,但是无法检测到它在UIView块内。 所以,如果你使用这个代码,那么它甚至会在UIView块之外进行animation处理,从而达到目的。 我会监视其他人的反应,但唯一的select似乎是让你自己的自定义UIViewanimation块系统,这将允许您添加自定义animation属性。 我会想象,Facebook的Pop框架将是一个很好的替代解决scheme。

尝试使用[UIView animateWithDuration:0.5 animations:^{ }];