获取drawRect每x秒重绘一次形状

时间:2016-12-13 01:48:27

标签: swift

我来自javascript,在画布上绘制或使用divs就像设置要绘制的对象的属性一样简单,然后调用setInterval或requestAnimationFrame来更新位置和重绘。

我希望能够在xcode中使用swift来实现这一点,但我找不到任何帮助我完成单独操作的教程。

我已经能够使用drawRect绘制任何我想要的东西但是我不知道如何设置它以便重绘我在坐标改变时所做的形状,例如,每30ms。我只想以最简单的方式做到这一点。

假设我有一个类drawExample,其中包含此代码:

override func drawRect(rect: CGRect) {
    let context = UIGraphicsGetCurrentContext()
    CGContextSetLineWidth(context, 3.0)
    CGContextSetStrokeColorWithColor(context, UIColor.purpleColor().CGColor)

    CGContextMoveToPoint(context, shapePosX, shapePosY + 0)
    CGContextAddLineToPoint(context, shapePosX + 250, shapePosY + 320)
    CGContextAddLineToPoint(context, shapePosX + 300, shapePosY + 320)
    CGContextAddLineToPoint(context, shapePosX + 0, shapePosY + 0)
    CGContextSetFillColorWithColor(context,UIColor.purpleColor().CGColor)
    CGContextFillPath(context)
}

我只想使用计时器

更新shapePosX和shapePosY

1 个答案:

答案 0 :(得分:1)

你想要利用UIView& UIViewControllers内置重绘和计时器。你将在UIViewController中执行此操作:

Timer.scheduledTimer(withTimeInterval: 1.0,
                             repeats: true,
                             block: { (timer) in 
                                self.view.setNeedsDisplay() 
                             })

注意**它是setNeedsDisplay(),触发UIView重绘。