作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Swift 编写一个计时器应用程序作为我的第一个 Cocoa 应用程序,但遇到了一个问题。我使用自定义 View 来显示剩余时间。它工作正常,但是当我按下其中一个按钮时,重绘停止,直到我松开按钮。我想这与我使用 NSTimer 触发 View 绘制的方式有关,这似乎会干扰运行循环。
当按下开始按钮时,会记录当前时间。
startTime = NSDate()
timer = NSTimer.scheduledTimerWithTimeInterval(0.05, target: self,
selector: "update", userInfo: nil, repeats: true)
在更新方法中,耗时被计算并存储在一个属性中,该属性由 View Controller 中的 KVO 监视。告诉 View 重绘的地方。
timerView.needsDisplay = true
更新 View 的正确方法是什么?
最佳答案
您只需将计时器添加到 mainRunLoop 模式 NSRunLoopCommonModes:
NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
关于macos - 定期触发重绘自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28612924/
我是一名优秀的程序员,十分优秀!