小编sbo*_*ami的帖子

iOS6中的MapView不会在北纬75度以上显示某些缩放级别

此代码设置以指定位置为中心的默认缩放级别viewDidLoad.该代码在以前版本的iOS中运行良好:

CLLocationDistance visibleDistance = 100000; // 100 kilometers
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(location, visibleDistance, visibleDistance);
MKCoordinateRegion adjustedRegion = [mapView regionThatFits:region];
.
.
.
[mapView setRegion:adjustedRegion animated:NO];
Run Code Online (Sandbox Code Playgroud)

但是,在iOS6中,对于纬度高于~75(> 75.1)的位置,应用程序崩溃并显示以下消息:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'Invalid Region <center:nan, nan span:nan, nan>'
Run Code Online (Sandbox Code Playgroud)

我发现对于给定的缩放级别mapView无法在MKCoordinateRegion内部设置正确.[mapView regionThatFits:region]将所有值返回为nan.如果我region直接使用变量,它只显示默认地图(整个世界).

经过一些测试后,我发现通过调整visibleDistance我可以让代码正常工作.魔法距离似乎略高于20公里(对于一系列纬度和纬度的Delta值,大约在22到23公里之间).这只发生在北纬地区(-80工作正常).

初始定位后,地图可在任何位置工作.看起来Apple改变了可见地图区域的初始化方式.我正在为受影响的区域使用更高的缩放级别作为解决方法.有没有其他方法可以使它正常工作?

mapkit mkmapview ios ios6 ios6-maps

23
推荐指数
2
解决办法
5916
查看次数

带有NSPrivateQueueConcurrencyType的existingObjectWithID死锁

我正在使用NSPrivateQueueConcurrencyType并发类型运行冻结(死锁?)而不是NSMainQueueConcurrencyType.

我的上下文初始化

_managedObjectContext = [[NSManagedObjectContext alloc] 
initWithConcurrencyType:NSPrivateQueueConcurrencyType];  
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
Run Code Online (Sandbox Code Playgroud)

麻烦的代码:

NSManagedObjectID *managedObjectID = [self managedObjectIDForEntity:entity 
withParseObjectId:object.objectId];  
managedObject = [context existingObjectWithID:managedObjectID error:error];
Run Code Online (Sandbox Code Playgroud)

回溯: 回溯

链接到Github 项目并针对该问题的某些上下文打开问题.

multithreading deadlock core-data objective-c afincrementalstore

5
推荐指数
1
解决办法
612
查看次数

自定义UINavigationController UIToolbar子类

我需要使用子类UIToolbar中的子类UINavigationController.我知道这可以通过Interface Builder但我需要以编程方式完成.

文档声明UINavigationController工具栏属性是只读的,所以我对如何继续有点不知所措.

有关:

subclass objective-c uitoolbar uinavigationcontroller ios

2
推荐指数
1
解决办法
1299
查看次数