iphone - 自定义标注在 ios6 中显示不正确?

标签 iphone objective-c ios6 mkmapview

因为我想在 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 中,当我单击标注时, map View 正在移动并且标注未正确显示,如下图所示,而我正在缩放时它也没有正确显示我已经尝试了几个通过检查 os 的版本并尝试更改类中的一些方法但未使用来摆脱此问题的方法。

在 ios5 map View 中实现这些后像这样 enter image description here

在 Ios6 中,这个不像在 ios5 中那样正常运行。例如 enter image description here

最佳答案

我在使用这些类的 iOS 6 中也遇到过同样的问题。这些更改对我有用:

1) 此方法的更改:

您将在 map View 类中实现此方法

(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)rect 在此方法之后 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 中都可以正常工作。 您应该根据您的要求进行必要的更改。

关于iphone - 自定义标注在 ios6 中显示不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13598739/

相关文章:

iphone - 将组件添加到路径 - Objective C

iphone - 编辑 : UITextView Label is Cut in Half (Horizontally)

android - 从项目目录读取本地文件 | Kotlin 多平台移动 |知识管理系统

web-applications - IOS 6,safari 全屏webapp,home键

ios - 从右到左推送viewcontroller动画

ios - 如何在矢量化图像周围制作动画渐变边框(适用于 iPad 的 Objective-C)?

iphone - 如何从 Objective-C 代码中删除一次性使用的类变量?

iPhone/iOS : Subclassing UITableViewCell two times --> cannot reference properties of parentclass in InterfaceBuilder

ios - iOS Storyboard中的图像更改纵横比

iphone - 在 objective-c 中创建像类属性一样调用的常量? (例如 classA.KEY_FOR_ITEM1)