gpt4 book ai didi

iphone - 在代码块中添加和删除 subview 不会产生动画

转载 作者:行者123 更新时间:2023-12-03 21:10:03 25 4
gpt4 key购买 nike

我有以下代码用于在 map 上闪烁图像作为 MKAnnotationView 的一部分:

    UIView* containerView = [mapView viewForAnnotation:enemy];
UIImageView* redCircle = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Red_half_circle.png"]];


[UIView transitionWithView:containerView
duration:2.9
options:UIViewAnimationOptionAutoreverse&&UIViewAnimationOptionRepeat
animations:^{ [containerView addSubview:redCircle];}
completion:^(BOOL finished){[redCircle removeFromSuperview]; }];

因此,当我运行它时什么也没有发生。但!!!如果我删除“完成”代码块并将其替换为 NULL,那么至少动画会添加 subview 。也许选项与它有关?

问题:如何在 MKAnnotationView 中闪烁图像?

非常感谢。

最佳答案

首先要做的事情:

您已指定 UIViewAnimationOptionAutoreverse&&UIViewAnimationOptionRepeat 。这是“逻辑与”,而不是“按位与”。 Autoreverse是 16 ( 1<<4 ) 和 Repeat是 8 ( 1<<3 ),所以 Autoreverse&&Repeat16&&81 相同(因为它们被评估为真值),这恰好与 UIViewAnimationOptionLayoutSubviews 相同.

您想要UIViewAnimationOptionAutoreverse&UIViewAnimationOptionRepeat .

第二:您还没有指定转换;这相当于指定 UIViewAnimationOptionTransitionNone 。我认为这意味着持续时间被忽略(因为您已指定 ...TransitionNone ),因此完成会立即发生,因此您看不到任何东西。

第三:我也不认为UIView转换可以重复/反转(它需要跟踪您已删除/添加的 View ;据我所知,它只保留初始状态的“屏幕截图”),但我可能是错的。

你可能会在这样的事情上有更好的运气:

[containerView addSubview:redCircle];
redCircle.alpha = 0;
[UIView animateWithDuration:2.9
delay:0
options:UIViewAnimationOptionAutoreverse&UIViewAnimationOptionRepeat
animation:^{redCircle.alpha = 1;}
completion:NULL];

这应该使它淡入和淡出。您也许可以通过设置redCircle.hidden使其闪烁相反( UIView.hidden 未记录为可动画,但 CALayer.hidden 是可动画的,因此它可能仍然有效)。

关于iphone - 在代码块中添加和删除 subview 不会产生动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791390/

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