子视图出现下面superviews layer.border?(Subview appears un

2019-07-21 22:18发布

我有一个UIView中,我定义它是通过以下方式边界:

self.layer.borderColor = [UIColor blackColor].CGColor;
self.layer.borderWidth = 3;

我附上一个子视图到这个UIView ,而当我移动子视图越过边境,它会在它之下。 这是预期的行为? 反正有做在它上面的子视图去?

Answer 1:

按照苹果的规格 : It is composited above the receiver's contents and sublayers.

因此,边界将永远是高于一切的子视图,即使你把你的子视图到前面等。

所以我做一个背景视图伪造的边界。

例如:

UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
backgroundView.backgroundColor = [UIColor blackColor];
backgroundView.clipsToBounds = NO;

UIView *bView = [[UIView alloc] initWithFrame:CGRectInset(backgroundView.bounds, 3, 3)];
bView.backgroundColor = [UIColor redColor];

UIView *cView = [[UIView alloc] initWithFrame:CGRectMake(-50, -50, 100, 100)];
cView.backgroundColor = [UIColor yellowColor];
[bView addSubview:cView];

[backgroundView addSubview:bView];

[self.window addSubview:backgroundView];

和效果:



Answer 2:

你尝试了上海华盈的“clipsToBounds”属性设置为YES? 这是默认的性能原因设置为NO,但它设置为yes可能给你你正在寻找的效果。



Answer 3:

根据您的视图结构,它可能是更容易的子视图添加到您的主视图的 。 然后,它可以重叠,主视图,并且将覆盖边境按照您的要求。



文章来源: Subview appears underneath superviews layer.border?