真的很想回答这个问题https://devforums.apple.com/message/723468。我不能发布详细信息,因为它关于iOS 6并且是每个Apple的机密。
请将答案/评论发布到Apple Dev论坛帖子,并在此处告诉我。
编辑:自iOS6正式发布以来:
在我的pre-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发生了哪些变化?
答案 0 :(得分:5)
对此的修复是在viewForAnnotation方法中执行以下操作:
// iOS6 BUG WORKAROUND !!!!!!!
if (is6orMore) {
[annotationView setTransform:CGAffineTransformMakeRotation(.001)]; //any small positive rotation
}
这是我在原始问题中作为评论发布的,然后由cristis发布作为答案(引用我的评论),但我发布并接受我自己的答案,因为我想出了它。这有意义吗?
答案 1 :(得分:2)
这是作为评论发布的,我将其作为答案重新发布,以便任何人都可以轻松地看到它(并且浪费更少的时间来试图解决它)。
在viewForAnnotation方法中修复是===&gt;:
// iOS6 BUG WORKAROUND !!!!!!! if (is6orMore) { [annotationView setTransform:CGAffineTransformMakeRotation(.001)]; }
答案 2 :(得分:1)
我看到了同样的事情。这是修复:
在MKAnnotationView的子项上设置您的变换,所以在伪代码中:
view.child.transform = CGAffineTransformMakeRotation(0.3);
让他们控制注释视图并控制您的视图子树。变换连接,你将继承他们在位置上做的任何事情。在iOS 6上适合我。