真的很想回答这个问题https://devforums.apple.com/message/723468。我无法发布详细信息,因为它是关于 iOS 6 的,并且是 Apple 的机密信息。
请将答案/评论发布到 Apple Dev 论坛帖子,并在此处让我知道。
编辑:由于 iOS6 正式发布:
在我的 ios6 之前的代码中,我这样做是为了在用户位置移动时旋转地图:
//this is in my MKMapViewDelegate
-(void) rotateMap:(MKMapView *)mapViewTmp forLocation:(MKUserLocation *) userLocation {
...
//calculate needed rotation
...
[mapViewTmp setTransform:CGAffineTransformMakeRotation(lastRotation)]; //rotate the MKMapView
for (id<MKAnnotation> annotation in mapViewTmp.annotations) {
MKAnnotationView* annotationView =[mapViewTmp viewForAnnotation:annotation];
[annotationView setTransform:CGAffineTransformMakeRotation(-lastRotation)]; //counter rotate the Annotation Views
[annotationView setNeedsDisplay]; //ios6
}
}
这很好用(1000 名用户)。
然而,在 ios6 中(我在 2012 年 9 月 4 日更新了 Xcode/sdk),注释视图不保持这种旋转(例如,如果地图被平移)。它们翻转回未旋转的状态(由于我的地图已旋转,这意味着它们以一定角度而不是水平显示文本)。
该代码确实会暂时旋转注释,使其文本显示为水平,但如果地图被平移(并且它们似乎也是其他原因),那么注释将翻转到它们的非旋转状态,并且我的注释文本以相对于旋转地图。
旋转 MKAnnotationView 以使其在 IOS6 中保持旋转的正确方法是什么?MKMapView 发生了什么变化导致了这种变化?