gpt4 book ai didi

ios - 二级属性更新在动画后不粘

转载 作者:技术小花猫 更新时间:2023-10-29 11:08:31 25 4
gpt4 key购买 nike

此处为 REPRO 存储库:https://github.com/kaolin/38492498/tree/master


我有一个@property int percentScanned

我已经设置了 needsDisplayForKey:

+ (BOOL)needsDisplayForKey:(NSString *)key {
if ([@"percentScanned" isEqualToString:key]) {
return YES;
}
return [super needsDisplayForKey:key];
}

我的展示方式:

- (void)display {
_percentTextLayer.string = [NSString stringWithFormat:@"%02d%%",[[self presentationLayer] percentScanned]];
}

我的动画:

    [CATransaction begin];
self.percentScanned = 99;
_percentTextLayer.string=@"99%";
[CATransaction setCompletionBlock:^{
_percentTextLayer.string=@"99%";
self.percentScanned = 99;
}];
{
CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"percentScanned"];
[a setFromValue:@0];
[a setToValue:@99];
[a setDuration:4.];
[self addAnimation:a forKey:@"percentage"];
}
[CATransaction commit];

一切正常,除了在动画结束时,我的模型层字符串返回到“00%”。如您所见,我已经抛出了厨房水槽迫使它保持在“99%”的感觉(在 animation.removedOnCompletion = NO; 的“hack”之外animation.fillMode = kCAFillModeForwards;——实际上,添加这些并没有帮助!)。

确实 大约 3/30 秒后在同一层上有另一个动画,逐渐淡化不透明度....但是将其推出或删除它似乎并没有有区别。

我知道如何为标准动画值执行此操作,但我缺少一些关于如何使用次要/评估值执行此操作的信息......


编辑添加:

一路上,添加 animation.removedOnCompletion = NO;animation.fillMode = kCAFillModeForwards; 确实开始“工作”,但我不想泄漏动画....

如果我为 percentScanned 添加一个 setter,它不会在最后用 0 调用,但会在最后用 0 调用显示。很难追踪调用 setPercentScanned 和调用显示之间的联系...

我可以 hack 我的 display 如下所示:

- (void)display {
if ([[self presentationLayer] percentScanned] != 0) {
_percentTextLayer.string = [NSString stringWithFormat:@"%02d%%",[[self presentationLayer] percentScanned]];
}
}

然后它适用于我的特定用例,但这仍然不太理想....

并且在 display 方法中放置一个断点是相当没有帮助的(当然它只是发生在 display_if_needed 内部)。 :/

最佳答案

基本上,将结束值直接设置到层上并仅对 fromValue 进行动画处理。所以图层的值在动画结束时已经是正确的。

关于ios - 二级属性更新在动画后不粘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38492498/

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