站长网_站长创业_站长主页_站长之家_易采站长站

会员投稿 投稿指南 站长资讯通告: IOS绘制虚线的方法总结
搜索:
您的位置: 主页 > 教程 > 软件开发 > IOS开发 > » 正文

IOS绘制虚线的方法总结

来源: 易采站长站

一、重写drawRect方法。


- (void)drawRect:(CGRect)rect
{
 [super drawRect:rect];
CGContextRef currentContext = UIGraphicsGetCurrentContext();
//设置虚线颜色
 CGContextSetStrokeColorWithColor(currentContext, [UIColor BlackColor].CGColor);
 //设置虚线宽度
 CGContextSetLineWidth(currentContext, 1);
 //设置虚线绘制起点
 CGContextMoveToPoint(currentContext, 0, 0);
 //设置虚线绘制终点
 CGContextAddLineToPoint(currentContext, self.frame.origin.x + self.frame.size.width, 0);
 //设置虚线排列的宽度间隔:下面的arr中的数字表示先绘制3个点再绘制1个点
 CGFloat arr[] = {3,1};
 //下面最后一个参数“2”代表排列的个数。
 CGContextSetLineDash(currentContext, 0, arr, 2);
 CGContextDrawPath(currentContext, kCGPathStroke);
 
}

二、采用CAShapeLayer方式绘制虚线


CAShapeLayer *shapeLayer = [CAShapeLayer layer];
[shapeLayer setBounds:self.bounds];
[shapeLayer setPosition:CGPointMake(self.frame.size.width / 2.0, self.frame.size.height)];
[shapeLayer setFillColor:[UIColor clearColor].CGColor];
//设置虚线颜色
shapeLayer setStrokeColor:[UIColor BlackColor].CGColor];
//设置虚线宽度
[shapeLayer setLineWidth:self.frame.size.height];
[shapeLayer setLineJoin:kCALineJoinRound];
//设置虚线的线宽及间距
 [shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:3], [NSNumber numberWithInt:1], nil]];
 //创建虚线绘制路径
 CGMutablePathRef path = CGPathCreateMutable();
 //设置虚线绘制路径起点
 CGPathMoveToPoint(path, NULL, 0, 0);
 //设置虚线绘制路径终点
 CGPathAddLineToPoint(path, NULL, self.frame.size.width, 0);
 //设置虚线绘制路径
 [shapeLayer setPath:path];
 CGPathRelease(path);
 //添加虚线
 [self.layer addSublayer:shapeLayer];

关于这种方式已经有人整理出了一个非常好用的类方法,具体见下面这段代码,注意:下面非完整代码,如有需要,请自己百度搜索。


/**
 ** lineView:  需要绘制成虚线的view
 ** lineLength:  虚线的宽度
 ** lineSpacing: 虚线的间距
 ** lineColor:  虚线的颜色
 **/
 
+ (void)drawDashLine:(UIView *)lineView lineLength:(int)lineLength lineSpacing:(int)lineSpacing lineColor:(UIColor *)lineColor
{
 CAShapeLayer *shapeLayer = [CAShapeLayer layer];
 .....
 [shapeLayer setStrokeColor:lineColor.CGColor];
 ......
 [shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:lineLength], [NSNumber numberWithInt:lineSpacing], nil]];
  ......
 [lineView.layer addSublayer:shapeLayer];
 
}

三、经济实惠型:采用贴图的方式绘制虚线(需要设计师切图配合)


UIImageView *imgDashLineView =[[UIImageView alloc] initWithFrame:CGRectMake(15, 200, self.view.frame.size.width - 30, 1)];

[imgDashLineView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"xuxian.png"]]];

[self.view addSubview:imgDashLineView];
            
最新图文资讯
1 2 3 4 5 6
相关文章列表:
最新文章
易采站长站 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助 -