Swift - 动态改变 UIImageView 的图像
Swift - change image of UIImageView dynamically
我有一张正常的 UIImage
和一张 list
图片。我的目标是图像每隔几秒自动更改一次,并在我的 imageList
中进行某种永无止境的循环。
这是我的清单:
let images: [UIImage] = [
UIImage(named: "avocadoImage")!,
UIImage(named: "beerImage")!,
UIImage(named: "bikeImage")!,
UIImage(named: "christmasImage")!,
UIImage(named: "dressImage")!,
UIImage(named: "giftImage")!,
UIImage(named: "goalImage")!,
UIImage(named: "rollerImage")!,
UIImage(named: "shirtImage")!,
UIImage(named: "shoeImage")!,
UIImage(named: "travelImage")!,
]
我试过这个:
NSTimer(timeInterval: 0.5, target: self, selector: "ChangeImage", userInfo: nil, repeats: true)
但我不知道如何一遍又一遍地遍历我的数组。
创建以下实例属性:
private let imageView = UIImageView()
private var imageTimer: Timer?
private let images = [
UIImage(named: "avocadoImage"),
UIImage(named: "beerImage"),
UIImage(named: "bikeImage"),
UIImage(named: "christmasImage"),
UIImage(named: "dressImage"),
UIImage(named: "giftImage"),
UIImage(named: "goalImage"),
UIImage(named: "rollerImage"),
UIImage(named: "shirtImage"),
UIImage(named: "shoeImage"),
UIImage(named: "travelImage"),
]
然后启动计时器并将其添加到运行循环(可能viewDidLoad
):
private func startImageTimer() {
imageTimer = Timer(fire: Date(), interval: 5, repeats: true) { (timer) in
imageView.image = images.randomElement()
}
RunLoop.main.add(imageTimer!, forMode: .common)
}
然后您需要观察应用程序何时进入和退出后台,以便您可以切换计时器。添加这些观察者(可能 viewDidLoad
):
NotificationCenter.default.addObserver(self, selector: #selector(backgroundHandler), name: UIApplication.didEnterBackgroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(foregroundHandler), name: UIApplication.willEnterForegroundNotification, object: nil)
@objc private func backgroundHandler() {
imageTimer?.invalidate()
imageTimer = nil
}
@objc private func foregroundHandler() {
startImageTimer()
}
我有一张正常的 UIImage
和一张 list
图片。我的目标是图像每隔几秒自动更改一次,并在我的 imageList
中进行某种永无止境的循环。
这是我的清单:
let images: [UIImage] = [
UIImage(named: "avocadoImage")!,
UIImage(named: "beerImage")!,
UIImage(named: "bikeImage")!,
UIImage(named: "christmasImage")!,
UIImage(named: "dressImage")!,
UIImage(named: "giftImage")!,
UIImage(named: "goalImage")!,
UIImage(named: "rollerImage")!,
UIImage(named: "shirtImage")!,
UIImage(named: "shoeImage")!,
UIImage(named: "travelImage")!,
]
我试过这个:
NSTimer(timeInterval: 0.5, target: self, selector: "ChangeImage", userInfo: nil, repeats: true)
但我不知道如何一遍又一遍地遍历我的数组。
创建以下实例属性:
private let imageView = UIImageView()
private var imageTimer: Timer?
private let images = [
UIImage(named: "avocadoImage"),
UIImage(named: "beerImage"),
UIImage(named: "bikeImage"),
UIImage(named: "christmasImage"),
UIImage(named: "dressImage"),
UIImage(named: "giftImage"),
UIImage(named: "goalImage"),
UIImage(named: "rollerImage"),
UIImage(named: "shirtImage"),
UIImage(named: "shoeImage"),
UIImage(named: "travelImage"),
]
然后启动计时器并将其添加到运行循环(可能viewDidLoad
):
private func startImageTimer() {
imageTimer = Timer(fire: Date(), interval: 5, repeats: true) { (timer) in
imageView.image = images.randomElement()
}
RunLoop.main.add(imageTimer!, forMode: .common)
}
然后您需要观察应用程序何时进入和退出后台,以便您可以切换计时器。添加这些观察者(可能 viewDidLoad
):
NotificationCenter.default.addObserver(self, selector: #selector(backgroundHandler), name: UIApplication.didEnterBackgroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(foregroundHandler), name: UIApplication.willEnterForegroundNotification, object: nil)
@objc private func backgroundHandler() {
imageTimer?.invalidate()
imageTimer = nil
}
@objc private func foregroundHandler() {
startImageTimer()
}