无法关闭在界面生成器中创建的 NSView 实例的剪辑



在界面生成器中定义自定义视图时,我无法弄清楚如何关闭子视图/子层剪裁。当我以编程方式创建视图,并在StackOverflow上进行许多问题中的设置时,它对添加到视图中的子视图和添加到view.layer中的子层都很有效

((NSView*)containingWindow.contentView).wantsLayer = YES;
view.wantsLayer = YES;
view.layer.masksToBounds = NO;

一旦完成了这些操作(按顺序),对于在代码中创建的视图来说,一切都很好。如果我对IB中创建的视图做同样的事情(或者其他任何事情),我将一无所获。

我尝试使用自定义NSView来定义方法:

- (CALayer*)makeBackingLayer {
    CALayer* layer = [CALayer layer];
    layer.masksToBounds = NO;
    return layer;
}
- (BOOL)wantsDefaultClipping {
    return NO;
}

没用。我也试过在IB的View Effects中选中"核心动画层"下的框。这也没有帮助。最后,我尝试关闭约束,以防这是有责任的。也没用。

感谢您的帮助。我注意到的一件事是,我的底层视图"masksToBounds"一开始是NO,就像我设置的那样,但当我稍后记录视图层次结构时,它在同一个视图上变成了YES(通过其内存地址验证)

尝试:

myView.wantsDefaultClipping = NO;

也可以针对子视图执行此操作。

最新更新