我有一个超过界限的层支持的 nsview (通过情节提要设置)的子视图。由于某种原因,它被剪掉了。知道为什么会这样吗?
问问题
513 次
2 回答
1
默认情况下NSView
会将其子视图剪辑到其边界。
如果您有支持的图层NSView
,alignmentRectInsets:
可能会提供您的解决方案。它返回一个NSEdgeInsets
为图层的剪辑边界添加边距的 。覆盖子视图中的只读属性并返回所需的插图。
如果您需要更复杂的方法来插入剪辑,请查看alignmentRectForFrame:
and frameForAlignmentRect:
。
请参阅:developer.apple.com/…/Cocoa/Reference/ApplicationKit/Classes/NSView_Class
于 2015-06-04T21:00:02.393 回答
1
我刚刚解决了这个问题。虽然方法很简单,但它浪费了我一些时间。
有两点需要注意。
首先(最重要的!!),你应该设置你的 winow 的 contentview.wantsLayer YES;
然后,设置父视图的 layer.maskesToBounds NO;
我做了什么:
self.window.contentView.wantsLayer = YES;
self.testview.layer.backgroundColor = [NSColor clearColor].CGColor;
self.testview.layer.borderWidth = 3;
self.testview.layer.borderColor = [NSColor blueColor].CGColor;
self.testview.layer.masksToBounds = NO;
NSView *aView = [[NSView alloc]initWithFrame:NSMakeRect(-50, -20, 100, 100)];
aView.wantsLayer = YES;
aView.layer.backgroundColor = [NSColor redColor].CGColor;
[self.testview addSubview:aView];
效果
祝你好运
于 2017-03-24T06:30:16.890 回答