Subview appears underneath superviews layer.border?

前端 未结 4 1401
情歌与酒
情歌与酒 2020-12-01 09:02

I have a UIView in which I define it\'s border in the following manner:

self.layer.borderColor = [UIColor blackColor].CGColor;
self.layer.border         


        
4条回答
  •  萌比男神i
    2020-12-01 09:52

    According to the Apple specification: It is composited above the receiver’s contents and sublayers.

    So, the border will always be above of all your subviews, even if you bring your subview to the front and so on.

    So I make a background view to fake the border.

    E.g.:

    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];
    

    and the effect:

    enter image description here

提交回复
热议问题