我想通过将旧视图推到一边以滑入新视图( kCATransitionPush类型)来交换另一个视图。要使用CoreAnimation,我需要在我的视图中使用CALayers。问题是,通过setWantsLayer将背景层附加到我的窗口内容视图会扭曲视图中的所有内容。
我不确定这是否与我使用的一个名为MAAttachedWindow (http://mattgemmell.com/source)的NSWindow子类有关,它是一种HUD样式的透明弹出窗口,可以附加到屏幕上的另一个元素上。
如果需要,我可以提供这种失真的截图。我通过NSViewAnimation获得了动画效果,但正如其他许多人所经历的那样,NSViewAnimation的速度非常慢。我更喜欢使用CoreAnimation,但是这个问题使我无法使用它。
任何见解都是非常感谢的。
发布于 2009-11-27 02:30:55
除了非整数坐标的可能性之外,对我来说,文本似乎已经被绘制到了一个非不透明的缓冲区中。如果在非不透明背景色上绘制,然后进行合成,则LCD感知的Quartz文本抗锯齿将不起作用。相反,您的图层/视图必须用不透明的背景色填充背景,然后在其上方绘制文本。
我们已经尝试过的一种解决方法是:
滚动条的问题可能是该滚动条声明了-isOpaque,但事实并非如此。适当地调整不透明度和背景颜色渲染应该会有所帮助。
发布于 2009-11-11 07:48:37
考虑到你说这个问题不会出现在普通的窗口中,是时候使用鹰眼MAAttachedWindow了。在此代码中创建窗口时,我看到的第一件事是:
[self useOptimizedDrawing:YES];如果注释掉这一行会发生什么?下一步要看的是绘图代码。此外,-_redisplay方法禁用/重新启用屏幕更新,同时更新几何体和背景。所有这些都会让我怀疑它与图层支持的视图和动画的交互。
发布于 2009-11-11 23:04:05
看看失真是如何增加的,让我认为你的一个或多个视图的边界或框架不是完整的。
https://stackoverflow.com/questions/1708616
复制相似问题