我的应用程序在NSImageView
.
图像视图显示图像以及该图像上的色调。
这确保了标签和背景图像之间的对比度有效。
如您所见,子像素抗锯齿功能已启用并且工作正常。
当您将鼠标悬停在这些标签上时,它们会动画化frame
属性(实际上是包含它们的视图)。
制作动画时,子像素抗锯齿功能会被禁用,完成后会再次启用。
这看起来非常奇怪。
该图层永远不会重新绘制,并且子像素抗锯齿也不必更改。
所以我看不出为什么在制作动画时不应该显示它的充分理由。
我已经尝试了我能想到的一切。
- 制作
NSTextField
opaque
- 制作
CATextLayer
opaque
- 给予
NSTextField
背景颜色
- 给予
CATextLayer
背景颜色
总是相同的结果。
禁用标签的子像素抗锯齿功能不是一个选项,因为它在非视网膜设备上可读性不佳。
EDIT
我忘了图层被替换为presentationLayer
制作动画时。
该层可能不支持子像素抗锯齿,这就是它被禁用的原因。
现在的问题是我是否可以替换这个presentationLayer
with a CATextLayer
.
我还注意到的是设置shouldRasterize
to YES
也为动画启用了子像素抗锯齿,但仅限于背景颜色。所以没有背景颜色不会带来子像素抗锯齿。
有什么办法可以发布一段示例代码吗?我快速模拟了一个 NSWindow,添加了一个 NSImageView,添加了一个无背景的 NSTextField,并将 setWantsLayer: 设置为 YES。在我的 applicationDidFinishLaunching: 我在 NSTextField 的 Animator 框架上设置了一个新的矩形,但我没有看到任何像素化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)