一个带删除线的文本标签,继承自UILabel
自绘代码步骤如下:
1,重写控件的drawRect方法
2,首先得到上下文对象
3,设置颜色,并指定是填充(Fill)模式还是笔刷(Stroke)模式
4,在上下文中指定删除线的起点(含x,y)
5,根据标签文字的字体,确定文字的长度(即将被画的线条的长度)
6,指定删除线的终点(含x,y)
7,渲染到上下文,完成路径的绘制
可以定义一个BOOL属性, 是否需要画线, 代码如下
- (void)drawRect:(CGRect)rect
{
if (isWithStrikeThrough)
{
CGContextRef c = UIGraphicsGetCurrentContext();
CGFloat red[4] = {1.0f,0.0f, 0.0f,0.8f}; //红色
//CGFloat black[4] = {0.0f, 0.0f, 0.0f, 0.5f};//黑色
CGContextSetStrokeColor(c, red);
CGContextSetLineWidth(c, 2);
CGContextBeginPath(c);
//画直线
//CGFloat halfWayUp = rect.size.height/2 + rect.origin.y;
//CGContextMoveToPoint(c, rect.origin.x, halfWayUp );//开始点
//CGContextAddLineToPoint(c, rect.origin.x + rect.size.width, halfWayUp);//结束点
//画斜线
CGContextMoveToPoint(c, rect.origin.x, rect.origin.y+5 );
CGContextAddLineToPoint(c, (rect.origin.x + rect.size.width)*0.5, rect.origin.y+rect.size.height-5); //斜线
CGContextStrokePath(c);
}
[superdrawRect:rect];
}