Jam*_*ils 6 core-animation objective-c uikit uiview ios
只有一天的赏金!
您是否可以使用UIViewanimateWithDuration块语法使用自定义动画属性?
我一直在为自定义上的自定义动画属性创建自己的隐式动画CALayer.
我已经设置了自定义的后备层,UIView并且可以使用a CATransaction来为自定义属性设置动画(在自定义示例中,我正在使用自定义属性更改圆的颜色circleColor).
我知道UIView通过NSNull从actionForLayer:forKey: selector方法返回来关闭可动画属性UIView.然后当属性被包裹在UIView animateWithDuration块中时,UIView将返回动画.
所以这将使用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;
}
Run Code Online (Sandbox Code Playgroud)
该代码允许您在 UIView 块内设置动画,但它无法检测到它位于 UIView 块内。因此,如果您使用此代码,那么它甚至会在 UIView 块之外进行动画处理,从而达不到目的。我将监视其他人的响应,但似乎唯一的选择是制作您自己的自定义 UIView 动画块系统,该系统将允许您添加自定义可动画属性。我认为 Facebook 的 Pop 框架将是一个很好的替代解决方案。
| 归档时间: |
|
| 查看次数: |
434 次 |
| 最近记录: |