【问题标题】:How can I know the values in CABasicAnimation keyPath我如何知道 CABasicAnimation keyPath 中的值
【发布时间】:2011-07-24 11:59:00
【问题描述】:

我找到了一些这样的代码:

CABasicAnimation *anim = [CABasicAnimation animation];
anim.keyPath = @"transform.scale";
anim.fromValue = [NSNumber numberWithFloat:1.0];
anim.toValue = [NSNumber numberWithFloat:0];
anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeBoth;
anim.delegate = self;
[self.view.layer addAnimation:anim forKey:@"scaleOut"];

anim.keyPath = @"transform.rotation.x";

据我所知,keyPath 是一个链式方法调用。 CALayer 的“transform.scale”是 aLayer.transform.scale。 “transform”是 CALayer 的属性,“scale”是 transform 的“属性”。但是CALayer中的属性变换是CATransform3D。

CATransform3D 中没有名为“scale”或“rotation”的属性。

我的问题是: keyPath 如何识别“缩放”和“旋转”?

【问题讨论】:

    标签: iphone calayer cabasicanimation


    【解决方案1】:

    Core Animation 扩展了 KVC 以支持直接寻址层的某些结构类型属性的字段(或伪字段)。该功能在Core Animation Extensions To Key-Value Coding 中进行了描述。

    【讨论】:

    • 例如,scale.xy 不在该列表中。所以它并不完整。我应该在哪里找到所有关键路径或缺失的路径?
    • @Honey,它仍然没有包含scale.xy,可能是因为scale.yx也有效,所以有很多组合。但是答案和文档似乎都没有提到组合它们的选项。
    【解决方案2】:

    我不确定,但我找到了一个可能会有所帮助的解决方案。

    在 SWIFT 中: 您可以使用以下命令代替编写字符串:

    let shadowAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.shadowRadius))
    

    当您键入 CALayer 时。

    我希望这会有所帮助。

    【讨论】:

    • 天啊,Apple 不能为此创建一个枚举吗?这个方法还是找不到"transform.rotation.z"
    猜你喜欢
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多