gpt4 book ai didi

cocoa - 如果 NSView 上的边缘是圆角的,则没有阴影

转载 作者:行者123 更新时间:2023-12-03 16:48:39 28 4
gpt4 key购买 nike

我正在尝试使用以下代码从一个 NSView 派生类中舍入和投影阴影:

   [graphHostView setWantsLayer:YES];


graphHostView.layer.shadowRadius = 5.0;
graphHostView.layer.shadowOffset = NSMakeSize(10.0f, -10.0f);
graphHostView.layer.shadowOpacity = 0.5f;


graphHostView.layer.needsDisplayOnBoundsChange = YES;
graphHostView.layer.masksToBounds = YES;
graphHostView.layer.cornerRadius = 10.0;
[graphHostView.layer setNeedsLayout];

阴影仅在没有舍入的情况下才起作用,并且舍入是第一还是第二并不重要。我还可以使用代码从 View 中间接转换阴影:

NSShadow *myShadow = [[NSShadow alloc]init];[myShadow setShadowOffset:NSMakeSize(10.0f, -10.0f)];[myShadow setShadowBlurRadius:3.0];[graphHostView setShadow:myShadow];[myShadow 设置];

效果完全相同。我已经尝试了显示、setNeedsLayout 和其他属性和方法的所有组合,但没有任何效果。

这对我来说似乎令人难以置信,这不起作用,毕竟 NSWindow 是圆形和阴影的......

提醒我必须补充一点,我也尝试在背衬层上应用阴影,结果相同。由于 maskToBounds 预计会遮盖边界之外的任何内容,因此有理由相信阴影不能显示在同一层上。同样清楚的是, mask 会对 mask 之后稍后添加到该图层的任何内容产生影响,因为设置阴影和 mask 的顺序不会对结果产生影响。

所以,问题仍然是,如果可能的话,如何在不驱动下面另一个带阴影的 NSView 的情况下实现想要的结果?

最佳答案

这为我做到了(用 Swift):

graphHostView.layer.masksToBounds = false

关于cocoa - 如果 NSView 上的边缘是圆角的,则没有阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8741719/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com