在界面生成器中定义自定义视图时,我无法弄清楚如何关闭子视图/子层剪裁。当我以编程方式创建视图,并在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;
也可以针对子视图执行此操作。