子视图出现在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? 由于性能原因,默认设置为“否”,但将其设置为“是”可能会导致您正在查找的效果。
根据您的视图结构,将子视图添加到主视图的父视图可能更容易。 然后,它可以重叠主视图,并按要求覆盖边框。