- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想使用 NSProgressIndicator 来显示一些进度。但我找不到增加该控制栏的方法。我也没有在网上找到示例。
let progressbar = NSProgressIndicator()
progressbar.frame = NSRect(x: 100, y: 20, width: 150, height: 10)
progressbar.minValue = 0
progressbar.maxValue = 10
self.window.contentView?.addSubview(progressbar)
for i in 0...10 {
progressbar.incrementBy(1) //has no effect
}
最佳答案
您将无法在如此紧凑的循环中演示进度条。
当您设置进度指示器的值时,OS X 显示机制直到下一次通过事件循环时才实际绘制差异,这直到您的方法返回后才会发生。换句话说,在进度指示器甚至有机会重绘自身之前,您将其一直设置为 10,因此您所看到的只是最终填充状态。
理论上您可以在每次循环后强制显示进度指示器 (progressbar.display()
),但我认为您无法区分它们之间的差异发生在 0.01 秒内。
然后,解决方案是在调用 incrementBy(1)
之间引入一个小的延迟,以便可以发生下一个事件循环并显示新值。您可以通过在代码中添加类似以下的内容来实现:
func delay(delay:Double, closure:()->()) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))),
dispatch_get_main_queue(), closure)
}
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var progressIndicator: NSProgressIndicator!
func applicationDidFinishLaunching(aNotification: NSNotification) {
let progressbar = NSProgressIndicator()
progressbar.frame = NSRect(x:100, y:20, width:150, height:10)
progressbar.minValue = 0
progressbar.maxValue = 10
self.window.contentView?.addSubview(progressbar)
self.progressIndicator = progressbar
progressIndicator.indeterminate = false
for i in 0...10 {
delay(1.0 * Double(i), closure: {
self.progressIndicator.incrementBy(1)
})
}
}
}
这会将 incrementBy(1)
的调用排队,间隔为 1 秒。
关于Swift:如何使用 NSProgressIndicator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38212874/
我正在使用 cocoa 开发一个应用程序,我需要计算 NSProgressIndicator 的剩余时间。这可能吗??? 提前致谢...... 最佳答案 这是一道“一根绳子有多长”的问题。如果不了解您
我有一个 NSProgressIndicator (旋转),当它没有动画时显示良好,但一旦开始动画它就会消失。但是,当我将样式切换为进度条时,它显示得很好,包括动画等等。此外,当它停止动画时它会重新出
我喜欢子类化 NSProgressIndicator。我使用了这段代码,并在 Interface Builder 中设置了子类: - (void)drawRect:(NSRect)dirtyRect
我在我的 cocoa 应用程序中使用“旋转器”NSProgressIndicator: 我想以不同的颜色显示它,以便它在深色背景上显示良好: 我该如何去做呢?我的最后一招是编写自己的自定义 NSVie
我想显示一个不确定的 NSProgressIndicator在我的应用程序中,但我在网上找不到任何明确告诉我如何操作的内容。有人可以向我指出某种教程或提供一些示例代码吗? 最佳答案 如果你想要一个进度
我有一个 NSProgressIndicator(进度条),当在这样的委托(delegate)方法中时,它似乎可以完美地工作: func restClient(client: DBRestClient
无法让 NSProgressIndicator 具有清晰的背景,无论如何它都显示为灰色背景: let progressbar = NSProgressIndicator.init(frame: NSR
我想使用 NSProgressIndicator 来显示一些进度。但我找不到增加该控制栏的方法。我也没有在网上找到示例。 let progressbar = NSProgressIndicator()
当我将进度指示器的背景设置为绿色时,它会按预期工作。 代码: loadingIndicator.wantsLayer = true loadingIndicator.layer?.background
NSProgressIndicator 允许在 isInminated == YES 时使用 stopAnimation:,但是如何停止确定进度条的动画呢? 对于上下文,我尝试执行此操作的进度条是 N
我会很简短: 我正在使用drawrect和NSBezierPath绘制线条。 为了绘制这些线,我使用了 for 循环。 现在,由于循环需要很多秒,我正在尝试使用 NSProgresIndicator
我正在制作一个对多个文件进行大量计算的应用程序,因此为了跟踪正在发生的所有事情,我添加了一个 NSProgressIndicator(值 0-100)。 我的应用程序中还有一个控制台,因此 logCo
我有 NSStatusItem 和显示图像的自定义 NSView。无论菜单是否打开,它都会显示不同的图像,如下所示: isMenuVisible = NO; - (void)awakeFromNib
我的主窗口 Controller 有一个工具栏项目,可以触发模式表的呈现。该工作表应该显示一个漫长的异步过程的进度(例如,将本地数据与服务器同步)。 但是,我无法让(不确定的)进度指示器动画化。 这是
我正在显示一个进度条来显示上传数据的进度。当我完成上传过程时,我有一些最终确定步骤,此时我计划将进度条的状态更改为中间状态(就像 mac 安装程序在安装过程的最后一刻显示的那样)。所以我所做的是将状态
我试图弄清楚如何使用辅助线程更新 UI 中不确定的 NSProgressIndicator,而主线程则执行一些繁重的工作,就像数十个应用程序所做的那样。此代码段基于 Apple 的“Trivial T
我有一个 NSTableView,其中包含两列,每行一个 NSTextField 和一个 NSProgressIndicator 对象。当我向上或向下滚动 NSProgressIndicator 对象
我的主运行循环上运行着一个 for 循环。我正在尝试使用进度指示器来显示正在发生的事情。问题是 UI 永远没有机会更新。 我看过NSProgressIndicator progress with Fo
我想更改在 NSProgressIndicator 栏中绘制的默认渐变的颜色。最简单的方法是什么? 最佳答案 最简单的方法是更改色调......请参阅屏幕截图以更好地理解...... 然后您将看到
默认情况下, cocoa 进度条有点粗,我想要一些更细的东西,就像 Finder 复制对话框中看到的进度条一样。但是,Interface Builder 将 NSProgressIndicator 控
我是一名优秀的程序员,十分优秀!