iOS虚线的实现(实现过程与android <shape/> 类似)

作为Android开发的我,在多年跃跃欲试后,终是干上了iOS!!!

如果用词不对,请帮我指定一下!

今天在实现UI效果的过程中,google一下实现了虚线的效果,做一下笔记:

代码如下(实现了一根虚线): 

    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(0, 0)];
    [path addLineToPoint:CGPointMake(0, frame.size.height)];
    
    CAShapeLayer *_shapeLine = [CAShapeLayer layer];
    _shapeLine.frame = CGRectMake(frame.size.width / 2.0, 0, 0.5f, frame.size.height);
    _shapeLine.lineJoin = kCALineJoinRound;
    _shapeLine.lineDashPattern = @[@(2),@(2)];
    _shapeLine.fillColor = [UIColor clearColor].CGColor;
     _shapeLine.strokeColor =[UIColor colorWithHex:0xF0F0F0].CGColor;
    _shapeLine.path = path.CGPath;
    [self.layer addSublayer:_shapeLine];

同时看看一下边的实现:

    UIBezierPath *path4 = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius: 10];
    
    CAShapeLayer *border = [CAShapeLayer layer];
    border.strokeColor = [UIColor blackColor].CGColor;
    border.fillColor =  [UIColor clearColor].CGColor;;
    border.frame = self.bounds;
    border.lineWidth = 1.f;
    border.lineCap = @"square";
    border.lineDashPattern = @[@2, @2];
    border.path= path4.CGPath;
    [self.layer addSublayer:border];

UIBezierPath是路径,CAShapeLayer是Shape容器,直接绘制到view的layer上,效果如下:

和Android的shape对比一下:

 
Android的shape与iOS UIBezierPath&CAShapeLayer对比

shape支持:line,oval,rectangle,ring

 corners

UIBezierPath在初始化时有对应的方法

暂时没有找到对应四个角单独设置的api

size,paddingCAShapeLayer.frame
solid

CAShapeLayer.fillColor

stroke

CAShapeLayer.strokeColor

stroke.dashWidth

CAShapeLayer.lineWidth  

支持层级

支持层级

 

 

 

 
 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值