gpt4 book ai didi

ios - 使 UIImageView 不透明度(alpha)随机变化

转载 作者:行者123 更新时间:2023-11-28 18:58:25 26 4
gpt4 key购买 nike

我是编码领域的新手,我想在我的项目中模拟闪烁的灯光效果,为此我有一个背景图像 (image1) 和另一个图像 (image2) 在它上面。

我想让图像 2 的不透明度随机变化,但我不知道如何使不透明度随机闪烁无限次,我尝试使用 UIView 动画但没有成功。

[self.view addSubview: image1];
[image1 addSubview: image2];

[UIView animateWithDuration:0.2f
delay:1.0f
options: UIViewAnimationOptionCurveEaseIn
animations:^(void) {
image2.alpha = 0.0
}
completion:^(BOOL finished){
image2.alpha = 1.0
}];

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

使用以下 UIViewAnimationOptions 重复动画和自动反转:

UIViewKeyframeAnimationOptionAutoreverse | UIViewKeyframeAnimationOptionRepeat

要使闪烁随机化,您可以使用 arc4random 函数随机化持续时间或延迟:

CGFloat duration = arc4random() % 3 + 1

示例:

[UIView animateWithDuration: duration
delay:1.0f
options: UIViewKeyframeAnimationOptionAutoreverse | UIViewKeyframeAnimationOptionRepeat
animations:^(void) {
image2.alpha = 0.0
}
completion:^(BOOL finished){
}];

这将使用初始随机值重复动画(不会每次都随机化)。

如果你想每次都用你提到的随机值重复它,你需要删除 UIViewKeyframeAnimationOptionRepeatUIViewKeyframeAnimationOptionAutoreverse 并做一些小技巧。创建一个函数来生成您的动画(生成随机变量等),然后在完成 block 上调用该函数来生成随机值并再次运行动画。

示例:

-(void)generateFlicker
{

[UIView animateWithDuration:0.5
delay:0.0f
options:nil
animations:^(void) {
self.view.alpha = (arc4random() % 100)/100.0f; //generates random number 0.0 to 1.0
}
completion:^(BOOL finished){
[self generateFlicker];
}];
}

它的作用是生成一个从 0.0 到 1.0 的随机数并将 alpha 设置为其,完成然后调用自身并将 alpha 设置为新生成的值。

如果您想生成随机延迟、持续时间或其他值,您可以在动画之前生成随机变量,并且每次运行时都会调用该函数。

关于ios - 使 UIImageView 不透明度(alpha)随机变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29179096/

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