iOS 在控件上添加虚线边框

http://www.jianshu.com/p/12b439443b3b


以按钮为例子,实现虚线按钮:

CAShapeLayer*border = [CAShapeLayerlayer];//虚线的颜色border.strokeColor = [UIColorredColor].CGColor;//填充的颜色border.fillColor = [UIColorclearColor].CGColor;//设置路径border.path = [UIBezierPathbezierPathWithRect:self.lineButton.bounds].CGPath;    border.frame =self.lineButton.bounds;//虚线的宽度border.lineWidth =1.f;//设置线条的样式//    border.lineCap = @"square";//虚线的间隔border.lineDashPattern = @[@4, @2];    [self.lineButton.layer addSublayer:border];

效果1

到这里基本已经OK了,但是突然发现我要的是有圆角的按钮,那就去添加圆角

border.cornerRadius=5.f;border.masksToBounds= YES;

然而效果是这样子的,四个角变的很奇怪

效果2

以为要在控件上添加圆角

self.lineButton.layer.cornerRadius =5.f;self.lineButton.layer.masksToBounds =YES;

然而效果依然很奇怪。

效果3

最后找资料终于得到实现效果 需要把bezierPathWithRect 替换成 bezierPathWithRoundedRect 就可以了

最终

下面全部代码

CAShapeLayer*border = [CAShapeLayerlayer];//虚线的颜色border.strokeColor = [UIColorredColor].CGColor;//填充的颜色border.fillColor = [UIColorclearColor].CGColor;UIBezierPath*path = [UIBezierPathbezierPathWithRoundedRect:self.lineButton.bounds cornerRadius:5];//设置路径border.path = path.CGPath;    border.frame =self.lineButton.bounds;//虚线的宽度border.lineWidth =1.f;//设置线条的样式//    border.lineCap = @"square";//虚线的间隔border.lineDashPattern = @[@4, @2];self.lineButton.layer.cornerRadius =5.f;self.lineButton.layer.masksToBounds =YES;    [self.lineButton.layer addSublayer:border];

作者:闹钟先生的闹钟

链接:http://www.jianshu.com/p/12b439443b3b

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

推荐阅读更多精彩内容

  • 以按钮为例子,实现虚线按钮: 到这里基本已经OK了,但是突然发现我要的是有圆角的按钮,那就去添加圆角 然而效果是这...
    闹钟先生的闹钟阅读 23,540评论 5 45
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,566评论 6 30
  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 6,303评论 0 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,141评论 5 13
  • >复杂的组织都是专门化的 >Catharine R. Stimpson 到目前为止,我们已经探讨过`CALayer...
    夜空下最亮的亮点阅读 1,064评论 0 2