NSProgressIndicator UI不更新:手动设置doubleValue后进度条仍显示最小值
问题描述
我尝试手动更新NSProgressIndicator的doubleValue属性,但填充式进度条的UI始终停留在最小值。日志显示数值已更新,请问我哪里操作有误?相关代码如下:
//Add progress-bar var hudSlider = NSProgressIndicator(frame: NSRect(x: view.frame.midX, y: view.frame.midY, width: 100, height: 40)) hudSlider.minValue = 0.0 hudSlider.maxValue = 100.0 hudSlider.doubleValue = 50.0 view.addSubview(hudSlider, positioned: .above, relativeTo: nil)
进度条UI截图:
解决方案
问题出在NSProgressIndicator的默认样式是不确定模式(转圈加载样式),这种模式下设置doubleValue不会显示填充进度。你需要添加两行关键设置:
//Add progress-bar var hudSlider = NSProgressIndicator(frame: NSRect(x: view.frame.midX, y: view.frame.midY, width: 100, height: 40)) hudSlider.minValue = 0.0 hudSlider.maxValue = 100.0 hudSlider.doubleValue = 50.0 // 新增的核心配置 hudSlider.isIndeterminate = false // 关闭不确定模式,启用数值驱动的进度显示 hudSlider.style = .bar // 指定为条形填充样式 view.addSubview(hudSlider, positioned: .above, relativeTo: nil)
isIndeterminate = false:让进度条切换到确定模式,此时doubleValue的变化才会同步到UI;style = .bar:明确使用水平条形的填充样式,确保进度以填充方式直观展示。
内容的提问来源于stack exchange,提问作者Avi Rok
相关产品推荐
相关产品推荐

