用Quartzcore /图层添加一个顶部边框到一个UIView?

是否有可能在UIView的顶部添加一个边框,如果是的话,请问如何?

我只是testing咆哮几行代码,它的工作非常好,只是testing到您的项目。 希望你能轻松得到你的解决scheme。

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

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

它的输出是:

在这里输入图像说明

我find了解决scheme,这里的技巧:

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

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) 

这是一个UIView类别,可以让你在UIView的任何一边添加一个图层后面或者视图背景的边框: UIView + Borders

我创build了这个简单的UIView子类,以便它在Interface Builder中工作,并使用约束: https : //github.com/natrosoft/NAUIViewWithBorders

这是我的博客文章: http : //natrosoft.com/?p=55

– 基本上只需在Interface Builder中放入一个UIView,并将其类types改为NAUIViewWithBorders。
– 然后在你的VC的viewDidLoad中做一些事情:

 /* For a top border only ———————————————- */ self.myBorderView.borderColorTop = [UIColor redColor]; self.myBorderView..borderWidthsAll = 1.0f; /* For borders with different colors and widths ————————— */ self.myBorderView.borderWidths = UIEdgeInsetsMake(2.0, 4.0, 6.0, 8.0); self.myBorderView.borderColorTop = [UIColor blueColor]; self.myBorderView.borderColorRight = [UIColor redColor]; self.myBorderView.borderColorBottom = [UIColor greenColor]; self.myBorderView.borderColorLeft = [UIColor darkGrayColor]; 

这里是直接链接到.m文件,所以你可以看到实现: NAUIViewWithBorders.m
还有一个演示项目。

Remus'在Obj-C中的答案:

  CALayer *topBorder = [CALayer new]; topBorder.frame = CGRectMake(0.0, 0.0, self.frame.size.width, 3.0); topBorder.backgroundColor = [UIColor redColor].CGColor; [myView.layer addSublayer:topBorder];