无法关闭在界面生成器中创建的NSView实例的裁剪
我无法弄清楚如何在界面生成器中定义自定义视图时关闭子视图/子图层裁剪。当我以编程方式创建视图并在StackOverflow中执行许多问题时发现的设置时,对于添加到视图的子视图和添加到view.layer的子图层都可以正常工作。这些东西是:无法关闭在界面生成器中创建的NSView实例的裁剪
((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;
并做到这一点也为孩子的意见。
“wantsDefaultClipping”不是要设置的属性,而只是必须在自定义视图中实现的方法。是的,我试过了。 – 2014-11-07 20:14:33
@Eric并尝试了孩子的意见? – nicael 2014-11-07 20:15:17
是的,和CALayer(childLayer.maskstoBounds = NO;)的等价物。唯一的区别似乎是主视图是从NIB创建还是在代码中完成。 – 2014-11-07 22:59:44
您是否找到了答案?我有类似的问题,虽然我没有使用IB。 – 2015-11-27 15:09:08