我想在表格视图单元格中绘制线条,以便我可以放置textfield&切换到单个单元格。我增加了细胞的高度。我怎样才能在细胞中划线?
我有UIView的子类,其中包含以下代码
//Get the CGContext from this view
CGContextRef context = UIGraphicsGetCurrentContext();
//Set the stroke (pen) color
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
//Set the width of the pen mark
CGContextSetLineWidth(context, 1.0);
// Draw a line
//Start at this point
CGContextMoveToPoint(context, 10.0, 30.0);
//Give instructions to the CGContext
//(move "pen" around the screen)
CGContextAddLineToPoint(context, 310.0, 30.0);
//Draw it
CGContextStrokePath(context);
然后我有一个tableViewController与分组表格样式。在cellForRowAtIndexPath中,我有以下代码
//code to add textfield
DrawLineView *drawLine = [[DrawLineView alloc]init];
[cell addSubview:drawLine];
//code add switch
但它没有划清界限。我不能使用2个不同的细胞。我得帮助我。这是我第一次处理iphone的图形。感谢
答案 0 :(得分:19)
如果您要做的只是绘制一条线,那么使用CAShapeLayer,将其传递给一条带有一条线的路径,然后将其作为单元格内容视图的子图层附加将会更好。该表应该比使用自定义drawRect的视图更好。
通过CALayer绘制线条的示例和路径:
// You'll also need the QuartzCore framework added to the project
#import <QuartzCore/QuartzCore.h>
CAShapeLayer *lineShape = nil;
CGMutablePathRef linePath = nil;
linePath = CGPathCreateMutable();
lineShape = [CAShapeLayer layer];
lineShape.lineWidth = 4.0f;
lineShape.lineCap = kCALineCapRound;;
lineShape.strokeColor = [[UIColor blackColor] CGColor];
int x = 0; int y = 0;
int toX = 30; int toY = 40;
CGPathMoveToPoint(linePath, NULL, x, y);
CGPathAddLineToPoint(linePath, NULL, toX, toY);
lineShape.path = linePath;
CGPathRelease(linePath);
[self.layer addSublayer:lineShape];
答案 1 :(得分:0)
两件事...... 首先,你通常不会吸引细胞本身。
您通常会进入内容视图。有时候,在单元格的backgroundView或selectedBackgroundView中进行绘制是有意义的。
[cell.contentView addSubview:drawLine];
其次,默认的单元格文本标签cell.textLabel和cell.detailTextLabel具有非透明背景。尝试将其背景颜色设置为[UIColor clearColor]
。
编辑:还有一件事:你需要为drawLine设置一个合适的框架
DrawLineView *drawLine = [[DrawLineView alloc]initWithFrame:cell.contentView.bounds];
答案 2 :(得分:0)
我认为绘制线条的一种非常简单的方法是创建一个UIView并用所需的颜色填充它,然后相应地选择它的宽度,并将高度设置为1像素,如下所示:
{{1}}