我的应用程序的背景有一系列图像。如何让它们以 1 秒的间隔自动更改?

Posted

技术标签:

【中文标题】我的应用程序的背景有一系列图像。如何让它们以 1 秒的间隔自动更改?【英文标题】:I have array of images for the background on my app. How can I make them change automatically with interval 1 sec? 【发布时间】:2017-04-05 12:38:01 【问题描述】:

我的应用中有一系列图片作为背景。如何让它们以 1 秒的间隔自动更改?

let myImagesArray = [UIImage(named:"1.png"),UIImage(named:"2.png"),UIImage(named:"3.png")

【问题讨论】:

【参考方案1】:

您可以使用 animationImages

//if you programmatically create your image view
let iv=UIImageView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))
view.addSubview(iv)

//assign your images to your image view
let myImagesArray=[UIImage(named:"1.png"),UIImage(named:"2.png"),UIImage(named:"3.png")]
iv.animationImages=myImagesArray
iv.animationDuration=1*myImagesArray.count
//to make it loop infinitely
iv.animationRepeatCount=0 
iv.startAnimating()

【讨论】:

xcode 让我将其更改为: super.viewDidLoad() let iv = UIImageView() let myImagesArray = [UIImage(named:"1.png"),UIImage(named:"2.png" ),UIImage(named:"3.png")] 但它仍然不起作用。 iv.animationImages = myImagesArray 为! [UIImage] iv.animationDuration = TimeInterval(1 * myImagesArray.count) //使其循环 iv.animationRepeatCount=0 iv.startAnimating() 什么不完全有效?我假设你放了一个 UIImageView 来显示你的背景图片?您是通过编程方式还是从情节提要中进行操作?您可以在 viewDidLoad 中启动图像,但也许您应该在 viewDidAppear 中调用 iv.startAnimating()。 另外@ЮлияКордюкова 也许你应该从 iv.animationRepeatCount=10 开始看看它是否有效,然后替换为 iv.animationRepeatCount=0 我是这样做的:backgroundImageView.animationImages = [UIImage(named: "IMG_8667")!, UIImage(named:"IMG_8658")!, UIImage(named: "IMG_8670")!] backgroundImageView .animationDuration = 1.0 //使其循环 backgroundImageView.animationRepeatCount = 0 backgroundImageView.startAnimating() @ЮлияКордюкова 太好了,它会无限循环吗?如果可行,请不要忘记将我的答案标记为正确的答案;)【参考方案2】:

使用 NSTimer

https://developer.apple.com/reference/foundation/nstimer/1412416-scheduledtimerwithtimeinterval

var iNSTimer = NSTimer.scheduledTimerWithTimeInterval(60.0,target: self, selector: Selector("methodName"), userInfo: nil, repeats: true)

func methodName() 

   //This Method Execute after every 60 sec.

【讨论】:

【参考方案3】:

使用 NSTimer 检测 1 秒是否结束。此代码将从数组中获取随机图像并将其放入背景中的 imageView 中

Swift 3.0

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
    //SNIP, some code to setup the windos.   
    Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.handleTimer), userInfo: nil, repeats: true)
    return true


func handle(_ timer: Timer) 
        // Hanlde the timed event.
    var rnd: UInt32 = arc4random_uniform(imageArray.count)
    var imageName: String? = (tips[rnd] as? String)
    imageView.image = UIImage(named: imageName)


    - (void) handleTimer:(NSTimer *)timer 
        // Hanlde the timed event.

        uint32_t rnd = arc4random_uniform([imageArray count]);

        NSString *imageName = [tips objectAtIndex:rnd];
        imageView.image=[UIImage imageNamed:imageName]
    

斯威夫特 2.2

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool 
    //SNIP, some code to setup the windos.   
    NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(self.handleTimer), userInfo: nil, repeats: true)
    return true


func handleTimer(timer: NSTimer) 
        // Hanlde the timed event.
    var rnd = arc4random_uniform(imageArray.count)
    var imageName = tips[rnd]
    imageView.image! = UIImage(named: imageName)!

【讨论】:

谢谢!还有什么更简单的吗?我完全是初学者。 是 swift 吗?

以上是关于我的应用程序的背景有一系列图像。如何让它们以 1 秒的间隔自动更改?的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的背景图像在 Swift 中永远重复?

如果背景图像被媒体查询替换,它们会加载吗?

如何实现 cloudinary 以动态显示图像作为背景?我看不到正确获取它们

如何获取包含背景图像以覆盖整个div? [重复]

即使在图像被更改或删除后,以编程方式添加的 UIButtons 也会保留背景图像

如何以每页为基础更改我的 NavigationBar 的背景图像?