我有一个NSSlider,我正在尝试使用代码对其进行缩放:
let circle = NSSlider(frame: NSRect(x: 0.0, y: 333.0, width: 50.0, height: 50.0))
circle.layer?.setAffineTransform(CGAffineTransform(scaleX: 20.0, y: 20.0))
circle.wantsLayer = true
circle.sliderType = .circular
但此行不起作用:
circle.layer?.setAffineTransform(CGAffineTransform(scaleX: 20.0, y: 20.0))
MacOS中是否还有其他命令可扩展?我已经尝试过像在iOS中一样,但是它不起作用 我正在尝试将其放大2倍
答案 0 :(得分:1)
要不对NSSlider类进行大量修改就不可能。
NSSlider实现始终以不可键值可观察的方式将层的“ affineTransform”重置为其原始身份矩阵(scale = 1)。滑块会暂时更改大小,但随后会恢复为原始大小。
(代码中还存在一个错误,因为在访问该层之前需要设置wantLayer = true。但这还不够。)
This question有一个公认的答案,该答案解释了如何缩放任意NSViews。它适用于标签,但不适用于NSSliders。
您可以做什么::您可以创建自己的滑块类,该滑块类复制NSSlider的行为并具有scale属性。或者:您可以对NSSlider进行反向工程,以找出为什么它会阻止对其进行扩展的尝试。或者:也许您对调整滑块的knobThickness
感到满意?
答案 1 :(得分:-1)
代码CGAffineTransform(scaleX: 20.0, y: 20.0)
将使滑块 TWENTY 倍大!您应该使用CGAffineTransform(scaleX: 2.0, y: 2.0)
将其设为2倍大