这是我的主视图,我只想绘制一些东西进行测试,但我发现我的UI没有任何东西,这里是代码:
- (void)viewDidLoad {
[super viewDidLoad];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
CGContextMoveToPoint(context, 100.0f, 100.0f);
CGContextAddLineToPoint(context, 200.0f, 200.0f);
CGContextStrokePath(context);
}
这是我在线复制的示例代码。我假设代码是正确的,它没有任何错误,但没有出现。或者......这段代码不应该粘贴在viewDidLoad上?
答案 0 :(得分:4)
viewDidLoad没有上下文。您需要创建图像上下文,绘制图像,生成图像,然后将其添加到视图中,如下所示:
UIGraphicsBeginImageContext();
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
CGContextMoveToPoint(context, 100.0f, 100.0f);
CGContextAddLineToPoint(context, 200.0f, 200.0f);
CGContextStrokePath(context);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
[self.view addSubview:imgView];
[imgView release];
编辑: viewDidLoad是一个UIViewController方法,而不是UIView方法。我假设这个代码在你的控制器中,我是否正确?此外,viewDidLoad仅在从nib加载视图后调用。您是否使用了nib(使用Interface Builder构建的xib)或者是否以编程方式创建了视图?
答案 1 :(得分:1)
要使用您的代码在视图上绘图,您需要覆盖-drawRect:
而不是-viewDidLoad
。
- (void)drawRect:(CGRect)rect {
[super drawRect:rect]; // not necessary
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
CGContextMoveToPoint(context, 100.0f, 100.0f);
CGContextAddLineToPoint(context, 200.0f, 200.0f);
CGContextStrokePath(context);
}