带圆角和白色边框的UIView

41

由于UIProgressHUD需要访问私有API, 所以我希望构建一个带圆角和白色边框的UIView。 我知道如何使角变圆:

view.layer.cornerRadius = 5;

如何同时让UIView具有圆角和白色边框?

欢迎任何评论。

谢谢
interdev

6个回答

83

使用相同的层对象:

view.layer.borderWidth = 1;
view.layer.borderColor = [[UIColor whiteColor] CGColor];

12

有时候带白色边框的圆角不起作用,所以我使用了 UIBezierPathCAShapeLayer

使圆角生效的方法如下:

UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:self.imageView.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10.0, 10.0)];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.view.bounds;
maskLayer.path = maskPath.CGPath;
self.imageView.layer.mask = maskLayer;

使边框变为白色

CAShapeLayer*   borderShape = [CAShapeLayer layer];
borderShape.frame = self.imageView.bounds;
borderShape.path = maskPath.CGPath;
borderShape.strokeColor = [UIColor whiteColor].CGColor;
borderShape.fillColor = nil;
borderShape.lineWidth = 3;
[self.imageView.layer addSublayer:borderShape];

它会起作用。希望这可以帮到你。


2
使用.cornerRadius、.borderWidth和.borderColor以及.clipsToBounds,在我想要一个带有白色边框的圆形图像时,似乎在imageView周围产生了一些瑕疵。这为我解决了问题。 - Undrea
@Phan Van Linh,我该如何实现只有底部线? - Jatin Vashisht
@JatinVashisht 抱歉,我已经很久没有使用iOS了,所以无法解决这个问题。希望你能找到一个解决方案。 - Linh

11

视图层中也有边框属性,例如:

view.layer.borderWidth = 1;
view.layer.borderColor = [UIColor redColor].CGColor;

2
CALayer是Core Animation的一部分,而不是UIKit。因此,它使用CGColor而不是UIColor。 - MarkPowell
1
哦,对不起,我刚才是凭记忆打的。 - Jonathan.

8
view.layer.cornerRadius = 5;
view.clipsToBounds = YES;
view.layer.borderWidth = 1;
view.layer.borderColor = [UIColor whiteColor].CGColor;

5

代码以获得圆角和边框

#import <QuartzCore/QuartzCore.h>
view.layer.cornerRadius = 10;
view.layer.borderWidth = 1;
view.layer.borderColor = [[UIColor whiteColor] CGColor];

0
[view.layer setBorderWidth:2];

[view.layer setBorderColor:[[UIColor whiteColor]CGColor]];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接