0

创建一个简单的应用程序,并且无法做到没有错误

代码

我真的不知道为什么当 player.drawInRect 导致时 bg.drawInRect 不会导致错误?问题是当我们改变坐标时图像不会绘制/重绘

9 月 16 日 22:13:16 imac-admin.lan Letalka_drawrect[804]:CGContextRestoreGState:无效上下文 0x0。这是一个严重的错误。此应用程序或它使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体下降。此通知是出于礼貌:请解决此问题。这将成为即将到来的更新中的致命错误。

4

1 回答 1

1

您需要在drawRect通话之外启动计时器;didMoveToSuperview可能是一个好地方,但这取决于您要完成的工作。然后,在 中timerRedraw,调用setNeedsDisplay()以触发重新绘制。

var timer: NSTimer?

override func didMoveToSuperview() {
    // Stop the timer if it was already running
    if timer != nil {
        timer.invalidate()
        timer = nil
    }

    // Only start the timer if the view is actually part of a view hierarchy
    if superview != nil {
        timer = NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: "timerRedraw", userInfo: nil, repeats: true)
    }
}

func timerRedraw() {
    x += 5
    y += 6
    setNeedsDisplay()
}

我强烈推荐阅读 Apple 的iOS 绘图和打印指南,它解释了开始在 iOS 中进行自定义绘图所需了解的所有内容。

于 2014-09-16T19:59:11.720 回答