【问题标题】:MKMapView doesn't zoom and animate on iPad REAL DEVICE with iOS6MKMapView 不会在 iOS6 的 iPad REAL DEVICE 上缩放和动画
【发布时间】:2013-01-28 11:02:52
【问题描述】:

我在每一行都显示了带有坐标(存储在数组中)的 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 上,我看不到下降动画,但 pinView 直接在地图上捕捉。我使用了来自@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;
    }
}

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

【问题讨论】:

  • 你解决了吗?是什么问题,请发布您的解决方案作为答案。

标签: xcode ipad ios-simulator mkmapview


【解决方案1】:

在所有这些情况下,您是否使用完全相同的坐标?如果当前视图离目标视图太远,动画将被跳过。例如:整个欧洲 -> 意大利 = 平滑缩放。 1st Street,Nobodyville,OH -> Le First Street,PetiteVille,France = 即时快照。

【讨论】:

  • 嘿克雷格!不,如果我有两个附近的坐标(例如:同一城市的两条街道),动画也会被跳过,顺便说一句,我只能在 iOS6 iPad 真实设备上重现这个问题......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 2012-11-04
  • 2010-11-13
  • 2013-12-28
相关资源
最近更新 更多