我创建了一个cust UIView类,以便我可以显示Map对象的内容。经过大量研究,我仍然无法确定下面的方法为什么不绘制任何东西:
- (void)drawRect:(CGRect)rect
{
if(_map!=nil){
UIGraphicsBeginImageContext(rect.size);
UIImage *img = [UIImage imageNamed:@"grass"];
float w = rect.size.width / _map.width;
float h = rect.size.height / _map.height;
for(int x=0; x<_map.width; x++){
for(int y=0; y<_map.height; y++){
Tile *tile = [_map getTileAtX:x Y:y];
UIImage *img = [UIImage imageNamed:NSStringFromTileType(tile.type)];
[img drawInRect:CGRectMake(x*w, y*h, w, h)];
}
}
UIGraphicsEndImageContext();
}
}
我打电话给[mapView setNeedsDisplay]
来刷新UIView。
非常感谢任何帮助。谢谢!
答案 0 :(得分:3)
在您的代码中UIGraphicsBeginImageContext(...)
将新图像上下文推送到视图的上下文之上,drawInRect:
将图像绘制到此新上下文中。 UIGraphicsEndImageContext()
弹出图像上下文,使其内容失效。当您想要创建 UIImage时,通常会使用推送图像上下文,而不是在您需要将其内容绘制到上下文中时。
如果您想查看图片,请删除UIGraphicsBeginImageContext
和UIGraphicsEndImageContext
来电。