子视图出现在superviews下面layer.border?

我有一个UIView ,我用下面的方式定义它的边界:

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

我附加一个子视图到这个UIView ,当我把子视图移到边界上时,它就在它的下面。 这是预期的行为? 无论如何,使子视图上呢?

根据苹果的规范 : 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]; 

和效果:

在这里输入图像说明

你有没有尝试将超视图的“clipsToBounds”属性设置为YES? 由于性能原因,默认设置为“否”,但将其设置为“是”可能会导致您正在查找的效果。

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