MKMapView不会使用iOS6在iPad REAL DEVICE上进行缩放和动画制作

时间:2013-01-28 11:02:53

标签: xcode ipad ios-simulator mkmapview

我有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;
    }
}

这是一个众所周知的问题吗?我能解决吗?谢谢!

1 个答案:

答案 0 :(得分:0)

在所有这些情况下,您使用完全相同的坐标吗?如果当前视图离目标视图太远,则跳过动画。例如:整个欧洲 - >意大利=平滑变焦。第一街,Nobodyville,OH - > Le First Street,PetiteVille,法国=即时拍摄。