我目前正在使用 CGAffineTransformMakeRotation 旋转 MKAnnotationView 的图像属性。但是,在这种情况下,整个视图以及标注气泡都会旋转。所以我遵循了MKAnnotationView Only Rotate the Image property中的建议,现在正在创建一个 UIImageView 并将其作为子视图添加到 MKAnnotationView。图像现在可以毫无问题地显示和旋转。但是,现在 MKAnnotationView 不响应触摸事件。我需要它像以前一样表现 - 在点击/触摸时它应该显示标注气泡。有什么想法我需要做什么吗?
我尝试的初始方式(旋转标注气泡):
MKAnnotationView *aView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Pin"];
aView.image = [UIImage imageNamed:@"mapPin.png"];
float newRad = degreesToRadians(degreesToRotate);
[aView setTransform:CGAffineTransformRotate(CGAffineTransformIdentity, newRad)];
使用 UIImageView 并添加为子视图:
MKAnnotationView *aView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Pin"];
UIImageView *iv = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"mapPin.png"]];
iv.userInteractionEnabled = YES;
[aView addSubview:iv];
aView.canShowCallout = YES;
更新 我尝试添加手势识别器,但它不起作用。当我点击地图上 MKAnnotationView 中的 UIImageView 时,不会调用 imageTapped 方法。这是在方法内: - (MKAnnotationView *)mapView:(MKMapView *)mView viewForAnnotation:(id )annotation
MKAnnotationView *aView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Pin"];
UIImageView *iv = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"mapPin.png"]];
iv.userInteractionEnabled = YES;
iv.exclusiveTouch = NO;
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
[iv addGestureRecognizer:tapGesture];
[aView addSubview:iv];