iOS为UIView添加虚线边框

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

核心代码示例如下:

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即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容