gpt4 book ai didi

ios - 什么时候可以使用 CALayer.timeOffset

转载 作者:行者123 更新时间:2023-12-01 18:39:38 24 4
gpt4 key购买 nike

在高级 CALayer 问题上需要一些帮助。

我有一个添加 CAShapeLayer 的 UIView。该图层已暂停(速度 = 0),并且附加了一个我想手动控制的动画。

与此处非常相似:Tweening / Interpolating between two CGPaths / UIBeziers - 除了我的 View 是一个 Collection View 单元格。

一切都按预期工作,除了我不想从 0 位置开始。每个单元格可能从动画中的不同位置开始。

当 Collection View 询问我的 View 时,我试图将 layer.timeOffset 配置为 0.5 而不是 0。这不起作用,我尝试了我能找到的每个 View 和图层以及委托(delegate)回调。

我发现的唯一解决方法是:dequeueReusableCellWithIdentifier而不是设置 cellView.subLayer.timeOffset = 0.5; ,我将更新发送到稍后:

dispatch_after(main_queue, a bit later, ^{
cellView.subLayer.timeOffset = 0.5
});

所以我的问题是,对于图层/动画来说,什么是 viewDidLoad 的等价物。在图层上调用 timeOffset 何时真正起作用?

有没有人有这个问题?

最佳答案

通过操纵动画初始时间偏移找到多个(可能不正确的)解决方案。

最终我决定完全不依赖动画来渲染初始状态。相反,我在动画之外设置正确的属性值,并且仅在实际需要动画时、在用户交互期间添加动画,并在完成后将其删除。

这意味着有更多的代码,但至少它是正确的。图层和媒体计时很棘手。我找到的最好的文章在这里:

  • https://coveller.com/2016/05/core_animation_timing
  • http://ronnqvi.st/controlling-animation-timing

  • 如果您需要这样做,我强烈建议您按照 Apple 的建议暂停和恢复图层:
  • https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid/TP40004514-CH8-SW15

  • 此外,值得指出的是,在修改任何可动画属性时使用 CATransaction 至关重要,有时在文档和示例中被忽略。

    关于ios - 什么时候可以使用 CALayer.timeOffset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45388818/

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