我有UITableView,每行显示坐标(存储在数组中),当我点击表格行时,我想在这些坐标上居中(缩放和动画)我的MKMapView。这是简单的经典didSelectRowAtIndexPath方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
latitude = [dataSourceLatitude objectAtIndex:indexPath.row];
longitude = [dataSourceLongitude objectAtIndex:indexPath.row];
MKCoordinateRegion region;
region.center.latitude = latitudine.floatValue;
region.center.longitude = longitude.floatValue;
region.span.latitudeDelta = 0.20;
region.span.longitudeDelta = 0.20;
[map setRegion:region animated:TRUE];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
嗯,它适用于所有模拟器和设备,但不适用于带有iOS6的iPad REAL DEVICE:在这里我可以看到地图缩放和坐标中心只有我第一次点击一排桌子;通过在另一行上进行以下点击,我看到地图直接以坐标为中心,没有缩放和动画。所以情况就是这样:
iPhone 5.1 simulator = it works!
iPad 5.1 simulator = it works
iPhone 5.1 REAL DEVICE = it works!
iPhone 6 simulator = it works!
iPad 6 simulator = it works
iPad 6 REAL DEVICE = it DOESN'T WORK!
编辑:我的问题还有pinView animatesDrop:在带有iOS6的iPad REAL DEVICE上我看不到掉落的动画,但是引脚直接在地图上捕捉。我使用了来自@Anna Karenina的这个优雅的代码,它不仅适用于iOS6:
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)annotationViews
{
NSTimeInterval delayInterval = 0;
for (MKAnnotationView *annView in annotationViews)
{
CGRect endFrame = annView.frame;
annView.frame = CGRectOffset(endFrame, 0, -500);
[UIView animateWithDuration:1.500
delay:delayInterval
options:UIViewAnimationOptionAllowUserInteraction
animations:^{ annView.frame = endFrame; }
completion:NULL];
delayInterval += 0.1500;
}
}
这是一个众所周知的问题吗?我能解决吗?谢谢!
答案 0 :(得分:0)
在所有这些情况下,您使用完全相同的坐标吗?如果当前视图离目标视图太远,则跳过动画。例如:整个欧洲 - >意大利=平滑变焦。第一街,Nobodyville,OH - > Le First Street,PetiteVille,法国=即时拍摄。