首页 文章

NSTimer Swift难度

提问于
浏览
1

我正在尝试创建一个NSTimer,以便我可以向下移动UIImageView但是NSTImer有困难,先说这个 .

var timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target:self(), selector: Selector ("mrockdown"), userInfo: nil, repeats: true)

在调用中缺少参数#1的参数 . 但当我从 target:self() 删除括号时,它告诉我

无法使用类型为'(Double,target:ViewController - >() - > ViewController,selector:Selector,userinfo:nil的参数列表调用'scheduledTimerWIthTimerInterval',重复Bool .

我该怎么办?

2 回答

  • 0

    问题与你说的地方有关 . 看起来你试图将此作为 property 声明的一部分:

    class ViewController {
        var timer = ...
        // ...
    }
    

    但是你不能这样做,因为就存储的属性而言,没有 self . 您需要将计时器声明为Optional,然后再将其初始化:

    class ViewController {
        var timer = NSTimer!
        func someMethod {
            timer = ...
        }
    }
    

    然后你将删除括号(它们是错的),一切都会编译得很好 .

  • 1

    您可以在要触发计时器的函数内执行此操作(即 viewDidLoad 或某些 IBAction

    _ = Timer.scheduledTimer(timeInterval: yourInterval, target: self, selector: #selector(yourFunction), userInfo: nil, repeats: true)
    

    话虽这么说,要为视图设置动画,你应该使用它:

    UIView.animate(withDuration: yourDuration) {
        // set yourView's final position here
    }
    

相关问题