我前段时间开发了一款游戏。游戏包含在一张西班牙地图上,您必须猜测该地图上的城市位置(我也有 EEUU 和中国版本)我使用 iOS 5 基础并使用 iOS 5 sdk 开发了所有这些。
然后,3 周前我更新了西班牙游戏,我不得不使用 iOS 6 sdk,在模拟器和我的 ipad 2 (iOS 5.0.1) 和 iPod touch (iOS 5.1) 上一切似乎都很好,并发布了更新。
但是当人们开始下载或更新新版本时,他们中的一些人因为地图不适合屏幕而联系了我。
这是我如何在我的设备和模拟器上查看游戏的屏幕截图。(iPad 5.0.1 和 5.0、6.0 和 6.1 的模拟器,在视网膜和正常模式下)
这是它如何在其他人的设备上显示的屏幕截图。(装有 iOS 6.0 的 iPad 3 和装有 iOS 6.0.1 的 iPad 2)
这是我的 iPad 代码(据我所知,在 iPhone 上按预期工作)
CLLocationCoordinate2D centerLocation;
MKCoordinateRegion region;
centerLocation.latitude = 39.016740;
centerLocation.longitude = -5.93504;
region = MKCoordinateRegionMakeWithDistance(centerLocation, 0, 800000);
[map setRegion:region];
起初我认为这是视网膜问题,因为第一个联系我的人使用的是 iPad 3,我在周一修复了 iPad 视网膜的地图,但昨天我从另一个使用 iPad 2 的用户那里得到了同样的信息。
那么,我做错了吗?iOS版本之间的setRegion不一致吗?如果我的代码在模拟器上运行良好,我该如何测试它?
有人可以在真实设备上尝试我的代码并告诉我他们得到的地图是第一个还是第二个?
EDIT1: 接受答案后的最终想法:这不是iOS版本之间的问题,它似乎是时间问题,如果您在视图出现之前或之后设置它,区域会有所不同。它发生在 iOS 5 和 iOS 6 中。
iOS 5 和 iOS 6 之间的唯一区别发生在真实设备上,如果您在地图出现之前设置区域,它会保持原样,但在模拟器上的 iOS 6 上它将保持原样,但在真实设备上,它将显示为视图出现时设置的区域。
因此,解决方案是将区域设置为打开viewDidAppear
,它将在 iOS 5 和 iOS 6、模拟器和真实设备上以相同的方式显示。
编辑2:
区域上的0似乎也与问题有关,如果我使用region = MKCoordinateRegionMakeWithDistance(centerLocation, 800000, 800000);
该区域在视图加载之前和之后是相同的,至少在模拟器上是这样。如果我region = MKCoordinateRegionMakeWithDistance(centerLocation, 0, 800000);
在视图加载之前使用该区域,则该区域会有所不同,并且在以后使用它时会显示为“缩放”。
我会等到收到装有 iOS6 的 iPad Retina 后再继续测试这个问题。