在两点之间画一条线-如何通过UIView
我试图画一条连接两点的简单线。我想我在drawLine方法中得到了正确的代码。根本没有线条出现,我很确定这与我打电话的视角和我想画的视角有关。下面的代码是我在代码中构建下一个视图的地方(数据来自web服务)。视图创建得很好,所有按钮和对象都出现了 我正在尝试向我正在动态创建(下一步)的视图添加行,但不确定如何完成。从我得到的错误(无效上下文0x0)来看,我似乎在做一些不正常的事情。试图在不存在的视图上显示。我怎样才能做到这一点?如有任何建议,将不胜感激 我意识到传递观点可能不是正确的答案。我在这里正处于试错之中 澄清一下:我在这里打电话给drawLine: [nextView.view addSubview:next] 谢谢 谢在两点之间画一条线-如何通过UIView,uiview,drawing,line,cgcontextref,Uiview,Drawing,Line,Cgcontextref,我试图画一条连接两点的简单线。我想我在drawLine方法中得到了正确的代码。根本没有线条出现,我很确定这与我打电话的视角和我想画的视角有关。下面的代码是我在代码中构建下一个视图的地方(数据来自web服务)。视图创建得很好,所有按钮和对象都出现了 我正在尝试向我正在动态创建(下一步)的视图添加行,但不确定如何完成。从我得到的错误(无效上下文0x0)来看,我似乎在做一些不正常的事情。试图在不存在的视图上显示。我怎样才能做到这一点?如有任何建议,将不胜感激 我意识到传递观点可能不是正确的答案。我在这
我最后几天才想到这一点,我想我会在这里分享。在我的问题中,我可能添加了很多代码,但这些代码并没有帮助我将其简化为其他代码(没有注释) 归根结底,当试图画一条线时,您需要覆盖UIView子类的DrawRect方法,而不是像我那样覆盖UIViewController。如果从UIViewController调用DrawRect,但它不执行任何操作,则不会引发错误。我错过了那个小细节 要找到这个问题并解决这个问题,更复杂的是,我以编程方式创建了所有这些问题,并且最初根本没有将UIView子类化。在创建新视图后,我在以下类中添加了NSMutablearray中的所有点并重新绘制了线:
#import "draw.h"
@implementation draw
@synthesize lines;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
// Initialization code
}
return self;
}
-(void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
for (line *myLine in lines)
{
if ([myLine.color isEqualToString:@"255"])
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
else if ([myLine.color isEqualToString:@"65535"])
CGContextSetStrokeColorWithColor(context, [UIColor yellowColor].CGColor);
else if ([myLine.color isEqualToString:@"GRAY"])
CGContextSetStrokeColorWithColor(context, [UIColor grayColor].CGColor);
else if ([myLine.color isEqualToString:@"BLACK"])
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
int setNew = myLine.Width/4;
CGContextSetLineWidth(context, (CGFloat)setNew);
CGContextBeginPath(context);
CGContextMoveToPoint(context, myLine.x1, myLine.y1);
CGContextAddLineToPoint(context, myLine.x2, myLine.y2);
CGContextStrokePath(context);
}
}
@end
我最后几天才想到这一点,我想我会在这里分享。在我的问题中,我可能添加了很多代码,但这些代码并没有帮助我将其简化为其他代码(没有注释) 归根结底,当试图画一条线时,您需要覆盖UIView子类的DrawRect方法,而不是像我那样覆盖UIViewController。如果从UIViewController调用DrawRect,但它不执行任何操作,则不会引发错误。我错过了那个小细节 要找到这个问题并解决这个问题,更复杂的是,我以编程方式创建了所有这些问题,并且最初根本没有将UIView子类化。在创建新视图后,我在以下类中添加了NSMutablearray中的所有点并重新绘制了线:
#import "draw.h"
@implementation draw
@synthesize lines;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
// Initialization code
}
return self;
}
-(void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
for (line *myLine in lines)
{
if ([myLine.color isEqualToString:@"255"])
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
else if ([myLine.color isEqualToString:@"65535"])
CGContextSetStrokeColorWithColor(context, [UIColor yellowColor].CGColor);
else if ([myLine.color isEqualToString:@"GRAY"])
CGContextSetStrokeColorWithColor(context, [UIColor grayColor].CGColor);
else if ([myLine.color isEqualToString:@"BLACK"])
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
int setNew = myLine.Width/4;
CGContextSetLineWidth(context, (CGFloat)setNew);
CGContextBeginPath(context);
CGContextMoveToPoint(context, myLine.x1, myLine.y1);
CGContextAddLineToPoint(context, myLine.x2, myLine.y2);
CGContextStrokePath(context);
}
}
@end