iOS为UIView添加虚线边框

有时候需要为UIView添加虚线描边,本文记录一种实现方式,主要是通过对UIView的根layer添加CAShapeLayer来完成。效果图如下:

iOS为UIView添加虚线边框_第1张图片

核心代码示例如下:

CGSize screenSize = [UIScreen mainScreen].bounds.size;CGFloat viewWidth =200;CGFloat viewHeight =200;UIView *view = [[UIView alloc] initWithFrame:CGRectMake((screenSize.width- viewWidth)/2, (screenSize.height- viewHeight) /2, viewWidth, viewHeight)];view.backgroundColor= [UIColor colorWithWhite:0.9alpha:1];view.layer.cornerRadius= CGRectGetWidth(view.bounds)/2;CAShapeLayer *borderLayer = [CAShapeLayer layer];borderLayer.bounds= CGRectMake(0,0, viewWidth, viewHeight);borderLayer.position= CGPointMake(CGRectGetMidX(view.bounds), CGRectGetMidY(view.bounds));//    borderLayer.path= [UIBezierPath bezierPathWithRect:borderLayer.bounds].CGPath;borderLayer.path= [UIBezierPath bezierPathWithRoundedRect:borderLayer.boundscornerRadius:CGRectGetWidth(borderLayer.bounds)/2].CGPath;borderLayer.lineWidth=1./ [[UIScreen mainScreen] scale];//虚线边框borderLayer.lineDashPattern= @[@8,@8];//实线边框//    borderLayer.lineDashPattern= nil;borderLayer.fillColor= [UIColor clearColor].CGColor;borderLayer.strokeColor= [UIColor redColor].CGColor;[view.layeraddSublayer:borderLayer];[self.viewaddSubview:view];

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

可通过修改UIBezierPath来改变虚线框的路径。如果想把边框绘制成实线,可将borderLayer.lineDashPattern置为nil即可。

你可能感兴趣的:(iOS为UIView添加虚线边框)