我开始研究Xcode,当我按下按钮时,我无法理解如何在视图中绘制线条 我有这个代码
- (void)drawRect:(CGRect)rect
{
CGContextRef con = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(con, 5);
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGFloat componen [] = {0.0, 0.0, 1.0, 1.0};
CGColorRef color = CGColorCreate(space, componen);
CGContextSetStrokeColorWithColor(con, color);
CGContextMoveToPoint(con, 0, 0);
CGContextAddLineToPoint(con, 100, 100);
CGContextStrokePath(con);
CGColorSpaceRelease(space);
CGColorRelease(color);
}
这个代码在我启动应用程序时绘制一条线,但是当我按下带有我的参数(x1,x2,y1,y2)的按钮时,我想启动这段代码。 我创建了一个像这样的函数
- (void)drawLine
{
CGContextRef con = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(con, 5);
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGFloat componen [] = {0.0, 0.0, 1.0, 1.0};
CGColorRef color = CGColorCreate(space, componen);
CGContextSetStrokeColorWithColor(con, color);
CGContextMoveToPoint(con, x1, y1);
CGContextAddLineToPoint(con, x2, y2);
CGContextStrokePath(con);
CGColorSpaceRelease(space);
CGColorRelease(color);
}
但它无法画出
怎么做?
答案 0 :(得分:0)
我为UIView添加一行非常简单。
UILabel *line = [[UILabel alloc]init];
line.textColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.5];
line.frame = CGRectMake(0, 0, 320, 1);
[self.view addSubview:line];
然后你可以按下按钮来控制它的可见属性。
你的问题可以吗?
答案 1 :(得分:0)
的
- (void)drawRect:(CGRect)rect {}
方法调用系统。
在视图加载之前,它将由系统调用并绘制内容。
因此,如果在视图加载后更改绘图内容,则必须要求系统调用drawRect方法。所以你必须调用相关视图的setNeedsDisplay方法。
[myView setNeedsDisplay];
感谢名单
答案 2 :(得分:0)
定义您的drawRect:
,以便决定是否应该划一条线:
- (void)drawRect:(CGRect)rect {
if (self.drawLine) {
[self drawLineWithContext: UIGraphicsGetCurrentContext()];
self.drawLine = NO;
}
}
点击按钮后,让视图控制器设置您的视图参数并告诉系统刷新您的视图:
- (IBAction)doDrawing:(id)sender {
self.drawView.drawLine = YES;
self.drawView.x1 = 20.0;
self.drawView.x2 = 200.0;
self.drawView.y1 = 10.0;
self.drawView.y2 = 350.0;
[self.drawView setNeedsDisplay];
}