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

问题描述 投票:35回答:7

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

ios uiview layer
7个回答
96
投票

我只是测试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];

}

它的输出是: -


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

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)

6
投票

这是一个UIView类别,可以让你在UIView的任何一侧添加一个后退或视图支持的边框:UIView+Borders


2
投票

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

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

- 基本上只需在Interface Builder中放入UIView并将其类类型更改为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 还有一个演示项目。


2
投票

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

2
投票

Swift 4中的GilbertOOI's answer

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)
© www.soinside.com 2019 - 2024. All rights reserved.