【问题标题】:CALayer filters and boundsCALayer 过滤器和边界
【发布时间】:2009-11-20 17:11:33
【问题描述】:

我刚刚开始编写一些 Core Animation 代码,我刚刚度过了令人沮丧的一天,试图找出一个特定的问题。

我有两个支持图层的视图,它们共同组成了一个向导/助手样式的用户界面:

1) 一个自定义背景视图,它用边到边渐变填充整个窗口,并在左侧显示漂亮的图像 2) 右侧有一个较小的框架视图,当您单击“前进”/“后退”按钮时,它充当更改对话框选择的主页:标签、控件、按钮等。

我“窃取”了一些示例代码,这些代码可以为照明滤镜设置动画,从而产生脉动效果。

我已将动画和过滤器添加到自定义背景视图的 CALayer 中。它工作正常,但较小框架视图中的控件也会跳动!

我不知道这是怎么回事,我希望控件不会受到应用于其下方图层的过滤器的影响。当然,与较小视图关联的 CALayer 应该被合成在背景视图层的顶部,并且其层上的所有内容都应该保持不受影响!?

我玩过各种场景,我很清楚我在这里遗漏了一些非常基本的东西。请帮忙!

【问题讨论】:

    标签: cocoa core-animation quartz-graphics quartz-2d


    【解决方案1】:

    CALayer 的内容过滤器会影响图层及其子图层。从您的问题来看,右侧的视图听起来像是您的背景视图的子视图,这有效地使其图层成为背景图层的子图层,并且过滤器也将应用于它。

    根据您要执行的操作,使用背景过滤器而不是内容过滤器可能会更好。如果我正确理解您的设置,您应该能够在右侧视图上设置背景过滤器,而不是在背景视图上设置内容过滤器。

    【讨论】:

    • 是的,在过去的几个小时里我一直在思考这个问题,然后有一个“啊哈”的时刻。我曾假设过滤器不会从树中“继承”下来,但显然不是这样。尽管当时我不明白为什么这与在父视图上设置内容过滤器有任何不同,但我确实尝试了后台过滤器路由。当然是因为“传承”。不幸的是,如果我设置背景过滤器而不是内容过滤器,我的动画代码 sn-p 似乎不起作用,所以我可能提前放弃了它。我会再试一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 2016-07-22
    • 2012-07-18
    相关资源
    最近更新 更多