【问题标题】:Cocoa: [self.view setWantsLayer:YES] brings that view above other subviews?Cocoa:[self.view setWantsLayer:YES] 将该视图置于其他子视图之上?
【发布时间】:2012-03-22 15:34:09
【问题描述】:

简单地说,我有一个带有一堆子视图的NSView。在awakeFromNib 方法中(在视图的控制器内),我决定添加以下内容:

[_backgroundImageView setWantsLayer:YES];
[[_backgroundImageView layer] setShadowOpacity:1.0f];
[[_backgroundImageView layer] setShadowOffset:NSMakeSize(-3, -3)];

backgroundImageView 位于所有子视图的后面。但是,当我添加前面的代码时,它正确地绘制了阴影,而且还在所有其他图层之上绘制了 backgroundImageView。为什么?我该如何解决这个问题?

【问题讨论】:

    标签: macos cocoa calayer subview


    【解决方案1】:

    您需要 setWantsLayer:YES 用于超级视图的代码。

    原来我也应该为超级视图(self.view)启用图层。不仅如此,我还应该收紧 imageView 的框架,否则即使它设置为“向上或向下比例”,它也会被“轴独立”缩放。

    【讨论】:

    • 然而,最终,我在图像中添加了阴影 =/ .. 为什么?绘图时出现故障。
    • 使用界面生成器与它无关,您只需在代码中调用_backgroundImageView的superview上的setWantsLayer:YES即可。
    • @valexa 好的,谢谢。我只是在打开 NIB 文件时才发现的。我希望我以前知道...
    • 感谢您的问答 - 救了我 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多