迅速在定时事件上切换图像

我试图通过定义应由我显示什么图像并且应用程序正常工作的定时事件,将UIImageView中显示的图像切换为不同的图像,但是当计时器变为5时,应用程序崩溃。如果有人可以帮助我,那就太好了(广告也是图片名称的开头,所以AD_1-AD_4)

import UIKit

 class ViewController: UIViewController {

//this is for declaring all the profile buttons
@IBOutlet weak var Icon_1: UIButton!
@IBOutlet weak var Icon_2: UIButton!
@IBOutlet weak var Icon_3: UIButton!
@IBOutlet weak var Icon_4: UIButton!
@IBOutlet weak var Icon_5: UIButton!
@IBOutlet weak var Icon_6: UIButton!
@IBOutlet weak var Icon_7: UIButton!
@IBOutlet weak var Icon_8: UIButton!


//this is used to swich the images
var i = Int(1)

let timer = Timer.scheduledTimer(timeInterval: 5.0,target: self,selector: #selector(fire),userInfo: nil,repeats: false)

//this is for the view
@IBOutlet weak var ad_view: UIView!

//this is for when the user swipes left
@IBaction func Icon_Swipe_Left(_ sender: Any) {
    Icon_1.isHidden = true
    Icon_2.isHidden = true
    Icon_3.isHidden = true
    Icon_4.isHidden = true

    Icon_5.isHidden = false
    Icon_6.isHidden = false
    Icon_7.isHidden = false
    Icon_8.isHidden = false
}

//this is when the user swipes right
@IBaction func Icon_Swipe_Right(_ sender: Any) {
    Icon_1.isHidden = false
    Icon_2.isHidden = false
    Icon_3.isHidden = false
    Icon_4.isHidden = false

    Icon_5.isHidden = true
    Icon_6.isHidden = true
    Icon_7.isHidden = true
    Icon_8.isHidden = true
}

// this is for decareing the image frame for the adds
@IBOutlet weak var Ad_Frame: UIImageView!


override func viewDidLoad() {

    super.viewDidLoad()
    // Do any additional setup after loading the view.

    //this is for showing the fist set of icons
    Icon_1.isHidden = false
    Icon_2.isHidden = false
    Icon_3.isHidden = false
    Icon_4.isHidden = false
    //this is for hideing the second set of icons
    Icon_5.isHidden = true
    Icon_6.isHidden = true
    Icon_7.isHidden = true
    Icon_8.isHidden = true

    self.Ad_Frame.image = UIImage(named: "AD_\(i)")
}

@objc func fire()
{
    i += 1
    self.Ad_Frame.image = UIImage(named: "AD_\(i)")
}

}

adolfe5 回答:迅速在定时事件上切换图像

两件事:

1:您说您有AD_1-AD_4图片-仅有四张图片,因此无法应付第五张图片!我假设您的意思是AD_1-AD_5

2:更重要的是,您从i = 1开始,然后在尝试显示图像之前加1,因此实际上是在尝试显示图像2 ... 6。

在显示图像之后而不是之前增加i

,

改变火力,使其一旦达到5点便重新开始

@objc func fire() {
    self.Ad_Frame.image = UIImage(named: "AD_\(i)")
    i += 1
    if i > 4 { i = 1 }
}

离题,但我建议将i重命名为更易读的内容,例如counter。除了for循环外,不建议使用单字母变量。同样,在声明它时,您不需要调用Int(...)而是直接分配值,var counter = 1

本文链接:https://www.f2er.com/3156614.html

大家都在问