我正在尝试构建一个简单的单一视图应用程序,该应用程序运行一系列图像的无限幻灯片放映,每次图像更改之间都有时间延迟。我为此写的代码如下。我试着把它放到viewDidLoad和viewDidAppear中,但屏幕仍然是空白的,我猜是因为函数永远不会因无限循环而结束。
我在iOS和tkinter之前学到了一点Python,你的代码会进入mainloop。但我不太确定如何在Swift中做同等效果 有人可以解释为什么我遇到这个问题以及如何在Swift中执行此操作。感谢。
var arrayimages: [UIImage] = [UIImage(named: "charizard")!,UIImage(named:"Flying_Iron_Man")!]
var x: Int = 0
var images: UIImage
let arraycount = arrayimages.count
repeat{
images = arrayimages[(x % arraycount)]
sleep(1)
slideshow.image = images
x++
} while true
注意:幻灯片显示是图像视图插座。
答案 0 :(得分:5)
您正在寻找NSTimer
let timer = NSTimer.scheduledTimerWithTimeInterval(
1.0, target: self, selector: Selector("doYourTask"),
userInfo: nil, repeats: true)
第一个参数是您希望计时器触发的频率,第二个参数是什么对象将被调用的选择器,第三个是选择器名称,第四个是您想要传递的任何额外信息计时器对象上的参数,第五个是这是否应该重复。
如果您想在以后任何时候停止代码:
timer.invalidate()
答案 1 :(得分:3)
创建重复的NSTimer:
var timer = NSTimer.scheduledTimerWithTimeInterval(2.0,
target: self,
selector: "animateFunction:",
userInfo: nil,
repeats: true)
然后编写一个函数animateFunction:
func animateFunction(timer: NSTimer)
{
//Display the next image in your array, or loop back to the beginning
}