gpt4 book ai didi

iphone - 在哪里放置调节 CALayer 动画的代码?

转载 作者:行者123 更新时间:2023-11-28 22:24:39 24 4
gpt4 key购买 nike

我已经设法在我的自定义图层 PatternLayer 的 drawInContext 方法中绘制了一个条形图。但是,我想为三件事制作动画,并且对我可以在哪里放置自定义动画规则代码感到困惑。这是我的自定义层的界面:

@interface PatternLayer : CALayer

@property (nonatomic) CGFloat percentage;
@property (nonatomic) CGFloat shineProgress;
@property (nonatomic, strong) UIColor* barColor;

@property (nonatomic) CGFloat strokeWidth;
@property (nonatomic, strong) UIColor* strokeColor;

简而言之,drawInContext 函数使用百分比来计算要填充多少条的裁剪点,barColor 用作填充颜色,shineProgress 是沿条放置高亮的位置,用于渐变目的。

在动画的一部分中,Action 触发 ViewController 更新百分比和 barColor。

在第二个动画中,shineProgress 不断循环,从 0 到 1.0 再到 0 到 1.0 ... 无限循环,没有尽头。

我阅读的所有示例都声明了 CABasicAnimation 或 CAKeypointAnimation,但没有人指定放置该对象的位置。我有一个带有一个 PatternView 的 ViewController,而 PatternView 有一层,即 PatternLayer。根据我对 UIActions 等的了解,我的用户交互代码进入了 View Controller ,但是我不确定如何构建动画,在哪里放置循环 shineProgress 的代码等。我需要吗使相同的两个属性(百分比,barColor)也暴露在 PatternView 中,以便 ViewController 可以访问它们?那么访问如何与层通信?如果我尝试访问自定义属性之一,如百分比,我不能,因为 PatternView 中的 self.layer 是一个通用的 CALayer*。它确实指向一个 PatternLayer,但我似乎无法通过转换来告诉它。

本质上,我看了所有讨论如何编写层代码的教科书,drawInContext、initWithLayer、needsDisplayForKey、actionForKey等,但我不知道如何在更高层次上触发这些功能,例如传入层的百分比和 barColor 值,循环 shineProgress 等。如何让永恒动画运行?如何将参数从 View 传递到图层?对此的任何指导将不胜感激。我真的不想像许多 Web 示例那样添加子层 --- 只使用附加到我的 View 的一层。

谢谢!

感谢您的帮助。

最佳答案

这不是一个确切的答案,但我会发布它,因为没有其他人在回答。我相信您只需阅读 the code of a similar control on Github 就可以了解如何操作。 .

基本上,drawInContext: 不会制作任何动画,它只知道如何根据图层属性的当前值绘制图层。 CABasicAnimation 更改图层属性的值(根据其属性 fromValuetoValue),然后调用 drawInContext:。它执行了很多次(它基于 durationtimingFunction),这会产生动画效果。

希望这能帮助您走上正轨。

关于iphone - 在哪里放置调节 CALayer 动画的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19314355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com