我需要绘制一个简单的图形,但我还没有自定义绘制iPhone图形的经验,所以我希望,有人可以帮助我。
任务很简单:我需要从资源中的.png文件中绘制图形背景,并从背景上某些位置的捆绑.png文件中绘制点。
对于绘图,我从UIView创建了后代,并使用以下代码行:
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect rect = CGRectMake(0, 0, 250, 500);
CGContextDrawImage(context, rect, [[UIImage imageNamed:@"graph.png"] CGImage]);
但它不起作用。
第一个问题,我无法解决 - UIGraphicsGetCurrentContext返回nil。
你能帮助我吗?
答案 0 :(得分:1)
您可能忘记在xib / storyboard中添加View。
在故事板中打开实用程序菜单,并将“视图”添加到您要绘制的屏幕中。然后将View的类更改为扩展View的类。
您可以在“使用5星评级视图”部分中关注此tutorial,将您的视图添加到故事板中。
有关详细信息,您可以:
答案 1 :(得分:0)
我用这段代码解决了我的问题。
- (void) drawGrid{
UIImage *sourceImage = [UIImage imageNamed:@"sungraph.png"];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(sourceImage.size.width, sourceImage.size.height), NO, 0);
CGRect rectangle = CGRectMake(0, 0, sourceImage.size.width, sourceImage.size.height);
self.frame = rectangle;
[sourceImage drawInRect:rectangle];
}
- (void) finalizeImage{
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
imgView = [[UIImageView alloc] initWithImage:newImage];
imgView.frame = CGRectMake(0, 0, newImage.size.width, newImage.size.height);
[self addSubview:imgView];
}
从我的类的 initWithFrame 我调用第一个函数。 之后,我将一些数据添加到图表中(绘制线条等) 并在最后调用 finalizeImage 。