首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用推送动画的视图交换

使用推送动画的视图交换
EN

Stack Overflow用户
提问于 2009-11-10 23:03:34
回答 3查看 963关注 0票数 2

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

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

如果需要,我可以提供这种失真的截图。我通过NSViewAnimation获得了动画效果,但正如其他许多人所经历的那样,NSViewAnimation的速度非常慢。我更喜欢使用CoreAnimation,但是这个问题使我无法使用它。

任何见解都是非常感谢的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-27 02:30:55

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

我们已经尝试过的一种解决方法是:

  • 使用背景颜色alpha=1绘制半透明的文本,并为相同颜色的文本添加笔触,选取笔触宽度以包围抗锯齿区域(注意此处的分辨率独立性)。
  • 在此“着陆板”上方按常规绘制文本。

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

票数 1
EN

Stack Overflow用户

发布于 2009-11-11 07:48:37

考虑到你说这个问题不会出现在普通的窗口中,是时候使用鹰眼MAAttachedWindow了。在此代码中创建窗口时,我看到的第一件事是:

代码语言:javascript
复制
[self useOptimizedDrawing:YES];

如果注释掉这一行会发生什么?下一步要看的是绘图代码。此外,-_redisplay方法禁用/重新启用屏幕更新,同时更新几何体和背景。所有这些都会让我怀疑它与图层支持的视图和动画的交互。

票数 0
EN

Stack Overflow用户

发布于 2009-11-11 23:04:05

看看失真是如何增加的,让我认为你的一个或多个视图的边界或框架不是完整的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1708616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档