【问题标题】:Disable/Customize NSPopUpButton animation in 10.10 Yosemite在 10.10 Yosemite 中禁用/自定义 NSPopUpButton 动画
【发布时间】:2014-10-22 05:41:13
【问题描述】:

上下文:

在 OS 10.10 中,Apple 为各种控件添加了一些新的微妙动画。例如,当您选中一个复选框时,蓝色的“选中”状态现在通过从复选框的中心向外扩展而不是突然切换到“选中”图像来动画化。

同样,当您打开 NSPopUpButton 并从菜单中选择一个项目时,菜单会以动画方式关闭,并且所选项目会显示为“放大”popUpButton。

问题:

我自定义了 NSPopUpButtons,它们的绘制方式与默认的 NSPopUpButton 不同:

当我在弹出菜单中选择一个项目时,10.10 中的新动画会在动画中短暂显示系统默认的 popUpButton 样式(蓝色右侧等)。

这是正在进行的动画的屏幕截图,显示了系统默认的 popUpButton 动画。(后面的深灰色矩形是我的自定义 NSPopUpButton 的“按下”状态):

我需要什么

这个动画显然看起来很糟糕,带有自定义控件。有没有办法禁用它或自定义它?我一直找不到。

【问题讨论】:

    标签: objective-c macos cocoa appkit nspopupbutton


    【解决方案1】:

    在 Interface Builder 中关闭 Bordered 属性似乎可以解决问题。

    下面是 Bordered on 和 Bordered off 的比较。

    请注意,Bordered 属性在默认情况下显示为关闭,而实际上它是打开的。我只需要选中然后取消选中它即可禁用它。

    【讨论】:

    • 完美运行!我不得不从 -drawBezelWithFrame:inView 中移出一些自定义绘图代码(因为不再在关闭 isBordered 的情况下调用该方法)。但这绝对解决了问题。谢谢!
    • 注意:如果你使用这种方法,请准备好一堆诅咒。关闭 -isBordered 将导致 AppKit 降低 popUpButton 的框架高度。在“小”尺寸下,按钮的高度从 22 像素变为 18 像素。这搞砸了所有的自定义图纸。 ...有些日子我只想把每个 Cocoa 工程师排成一列,直接打他们的脸。
    • 我最终直接编辑了 *.xib XML 以将我的按钮高度改回 22px。真正的问题是,当我将 -isBordered 更改为 false 时,IB 将其中一些设置为 18px 高,而将其他一些设置为 22px。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2015-06-14
    相关资源
    最近更新 更多