我正在尝试使 NSSlider 的值/数字非线性...
@IBOutlet private weak var _countSlider:NSSlider!;
let countSliderValues:[Int] = [1, 20, 50, 100, 500, 1000];
_countSlider.numberOfTickMarks = countSliderValues.count;
_countSlider.minValue = Double(countSliderValues[0]);
_countSlider.maxValue = Double(countSliderValues[countSliderValues.count - 1]);
_countSlider.allowsTickMarkValuesOnly = true;
_countSlider.integerValue = 100;
但由于某种原因, slider 显示线性值(1、200、400、600、800、1000)。有谁知道为什么会发生这种情况吗?
最佳答案
刻度线数量属性设置在 slider 的最小和最大之间均匀划分的刻度线。无法为每个刻度线定义目标值。
您最好的选择是通过子类化 NSSlider
和 NSSliderCell
并强制它们按照您想要的方式运行来推出您自己的解决方案,或者创建您自己的全新控件从头开始,特定于非线性缩放。没什么说您仍然不能使用 NSSliderCell
来绘制标准系统部件(轨道和旋钮)。
关于macos - 具有非线性刻度的 NSSlider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30056304/