Custom CallOut在ios6中显示不正确?

因为我想在mkmapview中实现自定义调用,所以我使用这些类CalloutMapAnnotationView.h和CalloutMapAnnotationView.m

我从以下链接中提取了这些类

https://github.com/asalom/Custom-Map-Annotation-Callouts/blob/master/Classes/CalloutMapAnnotationView.h

https://github.com/asalom/Custom-Map-Annotation-Callouts/blob/master/Classes/CalloutMapAnnotationView.m

这些工作在ios5罚款,但在ios6时,当我点击呼叫地图视图移动和调出是不正确的,如下图所示,而我缩放它也不正确我已经尝试了几种方法获得通过检查os的版本来摆脱这个问题并试图改变类中的一些方法但不使用。

在这样的ios5地图视图中实现这些之后 在这里输入图像描述

在Ios6中,这个不像ios5中那样正常。 例如 在这里输入图像描述


我也在使用这些类的iOS 6遇到同样的问题。 这些变化对我有用:

1)这种方法的改变:

这个方法将在你的地图视图类中实现

(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView*)view

如下面的顺序

self.selectedAnnotationView = view;

[self.mapView addAnnotation:self.calloutAnnotation];

2)在CalloutMapAnnotationView.m文件中

- (void)adjustMapRegionIfNeeded in this method first 5 lines like bellow

    CGFloat xPixelShift = 0;

   if ([self relativeParentXPosition] < 38) {

        xPixelShift = 38 - [self relativeParentXPosition];

   } else if ([self relativeParentXPosition] > self.frame.size.width - 38) {

  xPixelShift = (self.frame.size.width - 38) - [self relativeParentXPosition];

   }

3)在相同的类CalloutMapAnnotationView.m - (void)drawRect:(CGRect)rectCGFloat parentX = [self relativeParentXPosition];之后CGFloat parentX = [self relativeParentXPosition];

行和以上rect = self.bounds; 此行添加以下行

    if ([self relativeParentXPosition] < 38) {

       parentX = 38;

   } else if ([self relativeParentXPosition] > self.mapView.frame.size.width - 38) {

       parentX = [self relativeParentXPosition]-25;

   }

4)在同一个类CalloutMapAnnotationView.m中。

- (void)didMoveToSuperview {
        [super didMoveToSuperview];
        [self.superview bringSubviewToFront:self];
    }

您可以直接使用上述类并在iOS 5和iOS 6中使用它们,它们都可以正常工作。您应该根据您的要求进行必要的更改。


只要你可以添加nsstring标题和nstring字幕,_name就是你想要的标题。

- (NSString *)title {
    return _name;
}
- (NSString *)subtitle {
    return [NSString stringWithFormat:@"%f, %f", _coordinate.latitude, _coordinate.longitude];
}
链接地址: http://www.djcxy.com/p/11527.html

上一篇: Custom CallOut not displayed correctly in ios6?

下一篇: How to show remote push notification as a banner style in active state of app?