【发布时间】:2012-12-14 15:21:13
【问题描述】:
我前段时间开发了一款游戏。 游戏包含在西班牙地图上,您必须猜测该地图上的城市位置(我也有 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 后再继续测试这个问题。
【问题讨论】:
-
在我的例子中,我无法让 span 正常工作,直到我在 setRegion 上设置 'animated:NO'。如果我设置动画:YES,iOS 6 似乎忽略了跨度。 iOS 5 或更早版本没有此问题。
-
你解决了吗?无论我做什么,它都没有在 iphone4 ios6.1.3 中设置我想要的精确区域
-
在 viewDidAppear 上设置区域对我来说很有效。但是ios上的地区并不精确,我很幸运有适合3.5英寸屏幕和ipad的iphone上的西班牙地图的地区,但没有适合iphone 5上的西班牙地图的地区
标签: iphone objective-c ios ipad mapkit