【发布时间】:2012-07-16 04:14:43
【问题描述】:
我的应用程序中有一个非常奇怪的问题,它只发生在Retina 显示屏 和不是模拟器。
我开发了一组嵌入了 openstreetmaps 瓦片(地图片段)的应用程序。
在每个应用程序中,我都有很多显示在 UIScrollView 中的地图 (256px/256px)。 它在非视网膜设备和视网膜模拟器上完美运行。
问题:每个图块的最后一行像素以随机颜色出现(大多数时候是黑色)
为了说明,我用设备和模拟器对同一个地方进行了截图。它们组合在一张图片中:
可以看到黑色像素线不是在tile之外,而是在tile中最后一个像素行(导致两个屏幕之间没有移位)
甚至更奇怪的是:有时,当瓦片中的颜色变化很小时,像素线会采用随机元素的颜色,有时根本不会出现!
这里,蓝线,灰线,黑线.....
编辑:
我对代码进行了很多简化,并且仅加载这 2 个图块时出现故障:
int W = 256;
int H = 256;
NSString * map1 = [[NSBundle mainBundle] pathForResource:@"test1.png" ofType:nil];
NSString * map2 = [[NSBundle mainBundle] pathForResource:@"test2.png" ofType:nil];
UIImageView * pieceOfMap1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, H*0, W, H)];
UIImageView * pieceOfMap2 = [[UIImageView alloc] initWithFrame:CGRectMake(0, H*1, W, H)];
[pieceOfMap1 setImage:[UIImage imageWithContentsOfFile:map1]];
[pieceOfMap2 setImage:[UIImage imageWithContentsOfFile:map2]];
[self.view addSubview:pieceOfMap1];
[self.view addSubview:pieceOfMap2];
我尝试使用 128x128 @2x 瓷砖,但问题仍然存在!
会不会来自 OpenStreetMaps 图片?
我的两个图块可以在这里下载:http://dl.free.fr/n08C6JIqW
【问题讨论】:
-
我的建议是添加一大堆日志语句,您可以在其中指定图块框架和大小。这看起来像是一个浮点问题,您要指定具有小小数部分的数字。
-
感谢您的评论。我的每个帧操作数都是整数。我已经记录了这块地图框,并且使用视网膜模拟器和视网膜设备记录了完全相同的日志。我宁愿认为这将是一个调整大小的故障。
-
我做了更多的测试,我什至可以用非常简化的代码重现这个错误。我编辑了我的问题。
-
也许你应该使用浮点数而不是整数。 CGFLoat w = 250.0f;和 CGRectMake(0, h*1.0f, w, h)
-
我试过了,我什至记录了每个变量,没有发生任何奇怪的事情,并且线路保持不变。
标签: ios png openstreetmap retina-display