在幻灯片放映iOS APP中从URL Xcode 9加载图像

时间:2018-08-13 05:13:39

标签: ios swift xcode9

大家好,即使我在iOS应用中添加了1,2,3等,我也想知道如何从URL加载图像

此练习的目的是远程更改图像并将其实时显示在应用程序中

实际上我可以显示来自iOS设备的图像,这是我的代码

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var ImageView: UIImageView!

var timer: Timer!
var counter = 1

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.ImageView.image = UIImage(named: "IMAGE_TO_SHOW1")
    counter+=1;
    timer=Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(animate), userInfo: nil, repeats: false)

}
@objc func animate(){
    print("Animate Method")

    UIView.transition(with: self.view, duration: 5, options: UIViewAnimationOptions.curveEaseOut,
                      animations: {
                        UIView .setAnimationRepeatCount(5)
                        if(self.counter<6){
                            let name = "IMAGE_TO_SHOW\(self.counter)"
                            self.ImageView.image=UIImage(named: name)
                            self.counter+=1;
                            Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.animate), userInfo: nil, repeats: false)
                        };if(self.counter==6){
                            self.counter=1

                        }

    }, completion: {finished in


    })
}


}

但是我只能显示5张图像,如果我想要1或2或3或n,则需要显示n张图像

示例:

如果我要显示4张图片,请显示

https://www.images.com/IMAGE_TO_SHOW1
https://www.images.com/IMAGE_TO_SHOW2
https://www.images.com/IMAGE_TO_SHOW3
https://www.images.com/IMAGE_TO_SHOW4

如果我要显示3张图片

https://www.images.com/IMAGE_TO_SHOW1
https://www.images.com/IMAGE_TO_SHOW2
https://www.images.com/IMAGE_TO_SHOW3

******编辑****** 我将解释我的需求

我有2家商店(我自己的服装店) 我有4个iPad(每个商店2个) 我想在每个iPad上显示折扣幻灯片 我有一台服务器可以在其中发布具有直接URL的图像(www.domain.com/image1.jpg) 我想通过在服务器中上传图像来远程更改幻灯片图像 有时我有2个折扣,有时我有5个折扣

实际上,我必须更新应用程序才能显示新图像,但是我只想通过将图像上传到服务器来做到这一点 如何仅通过更改服务器上的图像来显示幻灯片更新的图像?

******编辑******

谢谢您的帮助

2 个答案:

答案 0 :(得分:0)

因为您要将动画完成处理程序中的计数器重置为:

if(self.counter==6){
     self.counter=1
}

根据您的数组(而不是6)添加动态计数(如果您将图像网址保存在数组中)。

if(self.counter==YOUR_IMAGE_URLS_ARRAY_COUNT){
     self.counter=1
}

〜编辑〜

要动态修饰图片,您可以使用Kingfisher library

该库提供了使用完成处理程序从url设置图像的方法。如果需要,可以在完成处理程序中设置动画,也可以设置带有动画的图像。

您可以使用的方法:

imageViewBg.kf.setImage(with: , placeholder: , options: , progressBlock: , completionHandler: )

希望有帮助

答案 1 :(得分:0)

您从1开始将计数器设为“ var counter = 1”

之后,您将根据“ if(self.counter <6)”的条件对其进行检查。

因此在此流程中,计数器执行1,2,3,4和5的条件。当等于6时,条件结果为false。

您需要做的是, 使您的计数器等于0并放置条件 “如果计数器<= arrayOfImages.count”