绘制边框并保持视图中的所有子视图

时间:2017-02-11 00:54:09

标签: ios objective-c

我一直在思考这个问题。基本上,下面的代码会在UIView上绘制边框,但是,如果我将另一个UIView作为子视图添加到UIView - 它将显示在边框上方。

喜欢这样:

enter image description here

我如何(尽可能干净),将边框保持在所有子视图之上?

喜欢这样:

enter image description here

这是我到目前为止所拥有的。但是,如上所述,它并没有将边界保持在其所有子视图之上。

    CGPathRef CGPathRect = CGPathCreateWithRect(rect, 0);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGPathRef border = CGPathCreateCopyByStrokingPath(rect.CGPath, NULL, 5.0f, kCGLineCapButt, kCGLineJoinMiter, 0);
    CGContextAddPath(context, border);
    CGContextSetFillColorWithColor(context, someCGColor);
    CGContextDrawPath(context, kCGPathFill);
    CGPathRelease(border);

我可以为边框本身创建一个单独的UIView,只需在UIView下面插入子视图,但这感觉相当hackish。如果有更好的方法 - 我很乐意听到它。

1 个答案:

答案 0 :(得分:1)

我会说使用:

 view.clipToBounds       = YES;
 view.layer.borderColor  = [UIColor redColor];
 view.layer.borderWidth  = 2;
 view.layer.cornerRadius = 4;

所有子视图都被裁剪,你可以保留你的边框:)。