我正在创建一个显示用户当前位置的MKMapView。 我想像Google Maps App一样旋转地图而不旋转注释。我使用以下代码
-(void) locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{
mapView.transform=CGAffineTransformMakeRotation(-1*newHeading.magneticHeading*3.14159/180)};
但是整个视图像这个图像一样旋转。 The image of the problem in my app
答案 0 :(得分:8)
您基本上需要对所有注释视图应用相同的变换,但具有负角度,即
for (id<MKAnnotation> annotation in mapView.annotations)
{
MKAnnotationView* annotationView = [mapView viewForAnnotation:annotation];
[annotationView setTransform:CGAffineTransformMakeRotation(-angle)];
}
如果您计划添加更多注释,则应将相同的代码放在mapView:didAddAnnotationViews:
中:
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
for (MKAnnotationView* annotationView in views)
{
[annotationView setTransform:CGAffineTransformMakeRotation(-angle)];
}
}
答案 1 :(得分:-1)
MKMapView上显示的所有注释和标注都是MKMapView的子视图,因此如果旋转容器视图,它的所有子视图也将被旋转。