【问题标题】:Using CALayer as a background for other NSViews使用 CALayer 作为其他 NSViews 的背景
【发布时间】:2012-03-19 05:49:14
【问题描述】:

我在一个窗口中有一个带有 NSTableView 的应用程序。我想使用 CALayer 作为整个窗口和表格视图的背景。到目前为止,在我所有的实验中,CALayer 总是在 NSTableView 上绘制,这不是我想要的效果。有没有办法使这项工作,或者我只是由于层托管视图与 NSViews 的性质而运气不佳?

我的测试设置是一个带有通常 NSScrollView/NSTableView 组合的窗口,以及在视图顺序中它后面的同级 NSView。 NSView 设置为层托管,其中包含我的自定义层(只是一个设置了 backgroundColor 的层)。我已经尝试将窗口的内容视图设置为图层支持,以及表格视图本身,以及将 NSScrollView 包装在图层支持的 NSView 中。结果总是一样的。

感谢您提供的任何见解。

【问题讨论】:

    标签: cocoa core-animation calayer nsview


    【解决方案1】:

    这很简单。所有重叠的视图或图层都应该是图层支持或图层托管以便正确排序。

    你可以设置[tableview setWantsLayer:YES]
    或者只是在编辑界面时在图层选项卡中检查它。

    【讨论】:

    • 你测试过这个吗?在我使用 NSScrollView/NSTableView 进行的测试中,两者都设置为支持图层,CALayer 仍然显示在它们之上。
    • 您是否尝试在初始化后重新排列它们?在 awakeFromNib 中?例如,您可以按正确的顺序将 addSubview 发送到他们的超级视图。并确保 superview 也是层支持的。
    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 2020-11-22
    • 1970-01-01
    • 2015-09-01
    相关资源
    最近更新 更多