ios-畫虛線

需求:

需要實現虛線功能

實現方法:

方法一:
使用貝塞爾曲線實現

- (void)addBorderToLayer:(UIView *)view
{
    CAShapeLayer *border = [CAShapeLayer layer];
    //  線條顏色
    border.strokeColor = [UIColor lightGrayColor].CGColor;
    
    border.fillColor = nil;
    
    
    UIBezierPath *pat = [UIBezierPath bezierPath];
    [pat moveToPoint:CGPointMake(0, 0)];
if (CGRectGetWidth(view.frame) > CGRectGetHeight(view.frame)) {
    [pat addLineToPoint:CGPointMake(view.bounds.size.width, 0)];
}else{
    [pat addLineToPoint:CGPointMake(0, view.bounds.size.height)];
}
    border.path = pat.CGPath;
    
    border.frame = view.bounds;
    
    // 不要設太大 不然看不出效果
    border.lineWidth = 0.5;
    border.lineCap = @"butt";
    
    //  第一個是 線條長度   第二個是間距    nil時為實線
    border.lineDashPattern = @[@6, @10];
    
    [view.layer addSublayer:border];
}

方法二:
Quartz 2D繪制

- (void)addBorderToLayer2:(UIView *)view
{
    
    
    
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    [shapeLayer setBounds:view.bounds];
    [shapeLayer setPosition:CGPointMake(CGRectGetWidth(view.frame) / 2, CGRectGetHeight(view.frame)/2)];
    
    [shapeLayer setStrokeColor:[UIColor lightGrayColor].CGColor];
    [shapeLayer setLineWidth:0.5];
    //  設置線寬,線間距
    [shapeLayer setLineDashPattern:@[@6,@10]];
    //  設置路徑
    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, 0, 0);
    if (CGRectGetWidth(view.frame) > CGRectGetHeight(view.frame)) {
        CGPathAddLineToPoint(path, NULL, CGRectGetWidth(view.frame),0);
    }else{
        CGPathAddLineToPoint(path, NULL, 0,CGRectGetHeight(view.frame));
    }
    [shapeLayer setPath:path];
    CGPathRelease(path);
    
    //  把繪制好的虛線添加上來
        [view.layer addSublayer:shapeLayer];
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • --繪圖與濾鏡全面解析 概述 在iOS中可以很容易的開發出絢麗的界面效果,一方面得益于成功系統的設計,另一方面得益...
    韓七夏閱讀 2,791評論 2 10
  • 前言:對《iOS開發系列--打造自己的“美圖秀秀”》文章做了整理如果對于CGPaht 或CGContextPath...
    LiYaoPeng閱讀 8,432評論 4 41
  • 目錄: 主要繪圖框架介紹 CALayer 繪圖 貝塞爾曲線-UIBezierPath CALayer子類 補充:i...
    Ryan___閱讀 1,708評論 1 9
  • 路徑定義一個或多個形狀或子路徑。 子路徑可以由直線,曲線或兩者組成。 它可以打開或關閉。 子路徑可以是簡單的形狀,...
    權宜平和閱讀 853評論 0 1
  • 我應該像秋葉一樣安靜了嗎 時間在葉片上繡著花呢 手中的熨斗在怎么熱烈 也燙不平這身上最美的紋身 秋風起處,蟬寒鳥驚...
    丁_香閱讀 256評論 7 8