Stuck:Swift iOS中的模拟时钟

时间:2015-04-08 21:10:07

标签: ios swift clock

我是swift(和一般编码)的新手,我一直致力于模拟手表项目。我到了一个我被卡住的地方。 println()命令都没有向控制台输出任何内容,除非它们在函数“func setTime(){...}”之前到达。不知道那里发生了什么。而且我似乎无法用我找到的数学here来旋转。我正试图将它从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)
}
}

1 个答案:

答案 0 :(得分:2)

您已在<{1}}函数中声明了setTime函数,但您从未调用它。此外,您viewDidLoad的选择器不正确 - 它必须是函数的名称,它必须是NSTimer,而不仅仅是字符串。

您应该将Selector函数声明移出setTime,我建议您在viewDidLoad -

中进行设置
viewWillAppear

如果您不熟悉编程,可能需要考虑在网上运行一些基本的编码教程。