2

我有一个超过界限的层支持的 nsview (通过情节提要设置)的子视图。由于某种原因,它被剪掉了。知道为什么会这样吗?

4

2 回答 2

1

默认情况下NSView会将其子视图剪辑到其边界。

如果您有支持的图层NSViewalignmentRectInsets:可能会提供您的解决方案。它返回一个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 回答