只使用Quartzcore/layer为UIView添加顶部边框?

Gil*_*OOl 35 layer uiview ios

是否可以在UIView之上添加边框,如果是这样,请问怎么样?

Nit*_*hel 97

我只是测试Bellow的几行代码并且它非常好用,只需将它测试到你的项目中.希望您能轻松获得解决方案.

为什么要创建新视图并将其添加到现有视图中?对于此任务,只需创建一个CALayer并将其添加到现有的UIView的Layer do中,如下所示: -

#import <QuartzCore/QuartzCore.h>
- (void)viewDidLoad
{
    CALayer *TopBorder = [CALayer layer];
    TopBorder.frame = CGRectMake(0.0f, 0.0f, myview.frame.size.width, 3.0f);
    TopBorder.backgroundColor = [UIColor redColor].CGColor;
    [myview.layer addSublayer:TopBorder];

  [super viewDidLoad];

}
Run Code Online (Sandbox Code Playgroud)

它的输出是: -

在此输入图像描述

  • 更精确,您的解决方案而非我的解决方案管理严重自转! (2认同)
  • UIView至少会做得很好 (2认同)

Gil*_*OOl 18

我找到了解决方案,这里有一些技巧:

CGSize mainViewSize = self.view.bounds.size;
CGFloat borderWidth = 1;
UIColor *borderColor = [UIColor colorWithRed:37.0/255 green:38.0/255 blue:39.0/255 alpha:1.0];
UIView *topView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, mainViewSize.width, borderWidth)];
topView.opaque = YES;
topView.backgroundColor = borderColor;
topView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;        
[self.view addSubview:topView];
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要担心轮换,这个很棒. (2认同)

bra*_*ipt 8

GilbertOOI在Swift 2中的回答:

let topBorder: CALayer = CALayer()
topBorder.frame = CGRectMake(0.0, 0.0, myView.frame.size.width, 3.0)
topBorder.backgroundColor = UIColor.redColor().CGColor
myView.layer.addSublayer(topBorder)
Run Code Online (Sandbox Code Playgroud)


aro*_*ooo 6

这是一个UIView类别,允许您在UIView的任何一侧添加一个后退或视图支持的边框:UIView + Borders


den*_*pro 5

GilbertOOI在 Swift 4 中的回答

let topBorder: CALayer = CALayer()
topBorder.frame = CGRect(x: 0, y: 0, width: myView.frame.size.width, height: 1)
topBorder.backgroundColor = UIColor.purple.cgColor
myView.layer.addSublayer(topBorder)
Run Code Online (Sandbox Code Playgroud)