【发布时间】:2013-11-07 04:23:10
【问题描述】:
所以 MKAnnotation 的 centerOffset 属性似乎不适用于 iOS7 用于处理自定义注释图像... 下面是在 iOS6(工作)和 iOS7(不工作)中拍摄的图像。
你们知道是什么导致了这个问题吗?有什么解决办法吗?
并不是说 iOS7 中的 centerOffset 值不正确,而是偏移量不会改变它接收到的任何值。
编辑:示例代码:
- (void)viewDidLoad
{
[super viewDidLoad];
MapAnnotation *ann = [[MapAnnotation alloc] initWithName:@"Some annotation" latitude:46.910068 longitude:17.881984 tag:1 type:MAP_ANNOTATION_TYPE_REQUEST];
self.mapView.delegate = self;
[self.mapView addAnnotation:ann];
MKCircle *circle = [MKCircle circleWithCenterCoordinate:CLLocationCoordinate2DMake(46.910068, 17.881984) radius:10];
[self.mapView addOverlay:circle];
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay {
if ([overlay isKindOfClass:[MKCircle class]]) {
MKCircleView *cv = [[MKCircleView alloc] initWithCircle:overlay];
cv.fillColor = [UIColor colorWithRed:247/255.f green:85/255.f blue:86/255.f alpha:0.2];
cv.lineWidth = 1;
cv.strokeColor = [UIColor colorWithRed:247/255.f green:85/255.f blue:86/255.f alpha:1.0];
return cv;
}
return nil;
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
//User location
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
//Annotations
MKPinAnnotationView *pinAnnotation = nil;
if(annotation != self.mapView.userLocation)
{
// Dequeue the pin
static NSString *defaultPinID = @"myPin";
pinAnnotation = (MKPinAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if ( pinAnnotation == nil )
pinAnnotation = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID];
pinAnnotation.image = [UIImage imageNamed:@"subscription-map-icon"];
pinAnnotation.centerOffset = CGPointMake(0, -20);
}
return pinAnnotation;
}
MapAnnotation 是一个简单的注解类,有一些不相关的属性。
【问题讨论】:
-
我无法复制这个问题(在 iOS 7 中 centerOffset 似乎没问题)。如果您愿意,请使用无效的代码更新问题。在 viewForAnnotation 中,您是否可能创建了一个 MKPinAnnotationView 并设置其图像(而不是创建一个简单的 MKAnnotationView 这是正确的做法)? MKPinAnnotationView 只能用于标准引脚,您不应该设置它们的图像。
-
我在从头开始一个项目并实现准系统 viewForAnnotation 时收到此错误事件。我在上面更新了我的问题。
-
正如我所说,在 viewForAnnotation 中,使用自己的图像时创建一个普通的 MKAnnotationView。不要创建 MKPinAnnotationView。
-
哦,你说得对,我还没看完你的评论。谢谢!
-
遇到了同样的问题并用你的答案解决了。谢谢@ZoltánMatók。
标签: ios dictionary ios7 mkannotation