iOS 循环图像幻灯片

发布于 2024-12-11 10:32:43 字数 290 浏览 0 评论 0原文

我有大约 30 张图像。我希望在没有用户干预的情况下运行这些图像的幻灯片。主要要求是 -

  1. 图像 1 淡入、显示 20 秒、图像 1 淡出 - 图像 2 淡入等。所有这些都会自动发生。无需用户干预。
  2. 另外,当我们到达最后一张图像 image20 时。幻灯片循环回到第一张图像。
  3. 该幻灯片可能还有其他元素,例如 UILabel。所以这不是图像幻灯片。

我最大的问题是如何将 20 个图像链接到这个淡入/淡出动画中?我们如何在 iOS 中完成这个任务?

I have around 30 images. I want to have a slideshow running of these images without user intervention. Prime requirements are -

  1. image1 fadesIn, displays for 20 seconds, image1 fadesOut - image2 FadesIn etc. All this happens automatically. No user intervention.
  2. Also when we reach the last image, image20. The slideshow loops back to the first image.
  3. This slideshow might have other elements also like UILabel. So it's just not image slideshow.

My biggest problem is how to chain 20 images into this fadein/fadeout animation? How do we get this done in iOS?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

假装不在乎 2024-12-18 10:32:43

您可以对必须在幻灯片上显示的每个图像使用包含不同 UIImageView 的 UIView 并创建嵌套动画块。像这样的事情:

[UIView animateWithDuration:1.0 
                 animations:^{ /* animations */ } 
                 completion:^(BOOL finished){ [UIView animateWithDuration:1.0 
                                                               animations:^{ /* animations */ } 
                                                               completion:^(BOOL finished){ [UIView animateWithDuration:1.0 
                                                                                                             animations:^{ /* animations */ } 
                                                                                                             completion:^(BOOL finished){}]; }]; }];

You can use an UIView containing a different UIImageView for each image you have to show on your slideshow and create a nested animation block. Something like this:

[UIView animateWithDuration:1.0 
                 animations:^{ /* animations */ } 
                 completion:^(BOOL finished){ [UIView animateWithDuration:1.0 
                                                               animations:^{ /* animations */ } 
                                                               completion:^(BOOL finished){ [UIView animateWithDuration:1.0 
                                                                                                             animations:^{ /* animations */ } 
                                                                                                             completion:^(BOOL finished){}]; }]; }];
辞取 2024-12-18 10:32:43

我开发了一个小框架,可以做到这一点,请随意使用它:
https://github.com/kirualex/KASlideShow

I have developed a small framework that does exactly that, feel free to use it :
https://github.com/kirualex/KASlideShow

空心空情空意 2024-12-18 10:32:43

Kirualex 的代码非常好,干净且易于实现,谢谢。
如果有人想通过触摸屏幕来停止转换,当启用自动幻灯片时,我在 KASlideShow.h 中添加了一个布尔属性“addTouchStop”,并在 KASlideShow.m 中添加了以下方法。在主 viewController 中将此布尔属性设置为 true。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (addTouchStop) {

    [self stop];
}
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    if (addTouchStop) {
    [self start];
}
}

Kirualex's code is really nice, clean and easy to implement, thanks you.
if anybody wants to stop the transition by touching the screen, when automatic slide is enabled, I added a boolean property 'addTouchStop' into the KASlideShow.h and the following methods into the KASlideShow.m. inside the main viewController set this boolean property true.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (addTouchStop) {

    [self stop];
}
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    if (addTouchStop) {
    [self start];
}
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文