卡滞:Swift iOS中的模拟时钟

卡滞:Swift iOS中的模拟时钟,ios,swift,clock,Ios,Swift,Clock,我是swift新手(通常是编码),我一直在从事一个模拟手表项目。我已经到了一个被困的地方。所有println()命令都不会向控制台输出任何内容,除非它们在函数“func setTime(){…}”之前到达。不知道那里发生了什么。而且我似乎无法用我找到的数学方法让手旋转。我想把它从obj-c转换成swift。(我知道底部部分现在是非常错误的)我一直在搞乱它(底部部分),但我没有得到任何旋转 任何帮助都将不胜感激。我觉得我很接近 var theTimer:NSTimer! override

我是swift新手(通常是编码),我一直在从事一个模拟手表项目。我已经到了一个被困的地方。所有println()命令都不会向控制台输出任何内容,除非它们在函数“func setTime(){…}”之前到达。不知道那里发生了什么。而且我似乎无法用我找到的数学方法让手旋转。我想把它从obj-c转换成swift。(我知道底部部分现在是非常错误的)我一直在搞乱它(底部部分),但我没有得到任何旋转

任何帮助都将不胜感激。我觉得我很接近

    var theTimer:NSTimer!

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

    func setTime(){

        println("set time")

        self.theTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "set time", userInfo: nil, repeats: false)

        let date = NSDate()
        let outputFormatter = NSDateFormatter()
        outputFormatter.dateFormat = "hh:mm:ss"
        let newDateString:NSString = outputFormatter.stringFromDate(date)
        println(newDateString)

        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitSecond, fromDate: date)
        var hour = components.hour
        var minute = components.minute
        var second = components.second

        println(hour)
        println(minute)
        println(second)

        **var secAngle = (6 * second)
        var minAngle = (6 * minute)
        var hourAngle = (30 * hour + minute / 2)

        self.secsImage.transform = CGAffineTransformMakeRotation( CGFloat(secAngle) )
        self.minsImage.transform = CGAffineTransformMakeRotation( CGFloat(Double(minAngle)) )
        self.hoursImage.transform = CGAffineTransformMakeRotation( CGFloat(Double(hourAngle)) )**

        println(secAngle)
        println(minAngle)
        println(hourAngle)
}
}

您在
viewDidLoad
函数中声明了
setTime
函数,但从未调用过它。此外,您的
NSTimer
选择器不正确-它需要是函数名,并且需要是
选择器,而不仅仅是字符串

您应该将
setTime
函数声明移出
viewDidLoad
,我建议您在
viewwillbeen中设置它-

var theTimer:NSTimer?

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

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    self.setTime()

    self.theTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("setTime"), userInfo: nil, repeats: true)

}

func setTime(){

    println("set time")
    let date = NSDate()
    let outputFormatter = NSDateFormatter()
    outputFormatter.dateFormat = "hh:mm:ss"
    let newDateString:NSString = outputFormatter.stringFromDate(date)
    println(newDateString)

    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitSecond, fromDate: date)
    var hour = components.hour
    var minute = components.minute
    var second = components.second

    println(hour)
    println(minute)
    println(second)

    var secAngle = (6 * second)
    var minAngle = (6 * minute)
    var hourAngle = (30 * hour + minute / 2)

    self.secsImage.transform = CGAffineTransformMakeRotation( CGFloat(secAngle) )
    self.minsImage.transform = CGAffineTransformMakeRotation( CGFloat(Double(minAngle)) )
    self.hoursImage.transform = CGAffineTransformMakeRotation( CGFloat(Double(hourAngle)) )**

    println(secAngle)
    println(minAngle)
    println(hourAngle)
}

如果你是新的编程人员,你可能想考虑在网络上运行一些基本的编码教程。