gpt4 book ai didi

objective-c - 使用推送动画查看交换

转载 作者:行者123 更新时间:2023-12-03 16:45:02 28 4
gpt4 key购买 nike

我想通过将旧 View 推到一边以滑入新 View (kCATransitionPush 类型)来将一个 View 与另一个 View 交换。要使用 CoreAnimation,我需要使用 CALayers 和我的 View 。问题是通过 setWantsLayer 将支撑层附加到我的窗口内容 View 会扭曲 View 中的所有内容。

我不确定这是否与我使用名为 MAAttachedWindow ( http://mattgemmell.com/source ) 的 NSWindow 子类有关,它是一种 HUD 风格的透明弹出窗口,附加到另一个元素上屏幕。

如果需要,我可以提供这种扭曲的屏幕截图。我通过 NSViewAnimation 实现了动画,但正如许多其他人所经历的那样,NSViewAnimation 非常慢。我宁愿使用 CoreAnimation,但这个问题阻止我使用它。

非常感谢任何见解

最佳答案

除了非整数坐标的可能性之外,对我来说,文本似乎已被绘制到非不透明的缓冲区中。如果 LCD 感知的 Quartz 文本抗锯齿功能是在非不透明的背景颜色上绘制并然后合成的,则该文本抗锯齿功能不起作用。相反,您的图层/ View 必须使用不透明的背景色填充背景,然后在其上方绘制文本。

我们尝试过的一个解决方法是:

  • 绘制半透明背景。
  • 使用背景颜色 alpha=1 绘制文本,向相同颜色的文本添加描边,选择描边宽度以包含抗锯齿区域(此处请注意分辨率无关)。
  • 按照正常方式在“着陆垫”上方绘制文本。

滚动器的问题可能是滚动器声明 -isOpaque 但事实并非如此。适当调整不透明度和背景颜色渲染应该会有所帮助。

关于objective-c - 使用推送动画查看交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1708616/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com