gpt4 book ai didi

ios - UIImage drawinrect 方法不绘制图像

转载 作者:行者123 更新时间:2023-11-28 20:10:35 32 4
gpt4 key购买 nike

我创建了一个自定义的 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。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

在您的代码中,UIGraphicsBeginImageContext(...) 将新图像上下文推送到 View 上下文之上,并且 drawInRect: 将图像绘制到这个新上下文中。 UIGraphicsEndImageContext() 弹出图像上下文并销毁其内容。推送图像上下文通常在您想要创建 UIImage 时使用,而不是在您需要将其内容绘制到上下文中时使用。

如果您想查看图像 - 删除 UIGraphicsBeginImageContextUIGraphicsEndImageContext 调用。

关于ios - UIImage drawinrect 方法不绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20459711/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com