gpt4 book ai didi

ios - 从 NSArray 更改 UIImageView 中的 UIImage

转载 作者:行者123 更新时间:2023-11-29 02:23:55 25 4
gpt4 key购买 nike

我有 2 个 NSArray。 1 - 带有图像的数组。和 2- 包含 URL 的数组。

我想要做的是通过图像数组进行转换(每个图像 3 秒),当用户单击特定图像时,我希望单击图像中的相同索引来访问该索引的 url。

例如:如果当前显示索引 1 处的图像,并且用户单击该图像(索引 1),那么我希望应用程序将您带到索引 1 处的网址。

这是我的代码:

#import <QuartzCore/QuartzCore.h>
...

NSArray *images = [[NSArray alloc] initWithObjects: @"myimage1", @"myimage2", nil];

NSArray *urls = [[NSArray alloc] initWithObjects: @"www.google.com",
@"www.stackoverflow.com", nil];

imageView.image = [UIImage imageNamed:images];

CATransition *transition = [CATransition animation];
transition.duration = 3.0f;
transition.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;

[imageView.layer addAnimation:transition forKey:nil];

我对此还很陌生,所以如果有些事情不清楚,或者代码没有意义,请不要对我太严厉。

谢谢!

最佳答案

有很多方法可以解决这个问题。

您需要清楚自己想要的行为。您是否希望它从第一个图像到下一个图像进行 3 秒的淡入淡出,然后立即开始淡入序列中的下一个图像?如果是这样,当用户点击时,如何判断哪个动画是当前动画?

我认为最好让图像在 3 秒的大部分时间内保持在一张图像上,然后有一个发生交叉淡入淡出的过渡期(1/2 秒?1 秒?)。那么很明显,如果用户在暂停期间点击,当前图像就是加载 URL 的图像。如果用户在交叉淡入淡出开始后单击,您将使用新图像。

我认为在这种情况下 CATransition 的复杂性不值得。 (核心动画和图层有点棘手。)

我要做的是创建一个 3 秒重复的 NSTimer,每次触发计时器时都会触发交叉淡入淡出到下一个图像。我会使用 UIView 动画来设置 View 的不透明度动画。

计时器将使用 View Controller 中的实例变量来跟踪当前图像帧索引。

然后,我将 ImageView 上的用户交互启用标志设置为 YES 并附加点击手势识别器。手势识别器的方法将停止计时器,获取当前动画帧的索引并使用它来加载新的 URL。

我在 github 上写了一个示例项目,名为 Animate-img (链接)使用一对彼此堆叠的 ImageView 来执行交叉淡入淡出动画。它将第一框架安装在底 View 中,第二框架安装在顶 View 中,并使顶 View 透明。它将顶 View 的不透明度从 0 动画到 1.0。然后,它将底部 ImageView 切换到图像 3,并将顶部 View 的不透明度淡化回 0,从而显示序列中的图像 3。然后,它重复该过程,淡入和淡出顶部 ImageView ,并交换当前不可见 ImageView 中的图像,以便在下一次不透明度更改时显示新图像。

您也可以使用 UIView 类方法 +transitionFromView:toView:duration:options:completion:

要制作淡入淡出动画,但您仍然需要一对 ImageView 并管理它们的进出。

关于ios - 从 NSArray 更改 UIImageView 中的 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27786245/

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