Zol*_*tók 6 dictionary mkannotation ios ios7
因此,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;
}
Run Code Online (Sandbox Code Playgroud)
MapAnnotation 是一个简单的注释类,具有一些不相关的属性.
Zol*_*tók 21
编辑:
正如@Anna Karenina让我意识到的那样,我使用的是MKPinAnnotationView而不是MKAnnotationView.显然MKPinAnnotation在centerOffset中有一个烘焙,这就是奇怪行为背后的原因.
原始答案:
对于任何有相同问题的人来说,这似乎是iOS7中的一个错误.
解决方法:
继承MKAnnotationView和覆盖setter method的centerOffset属性.
.h头文件中没有新内容,这就是.m实现文件的外观:
#import "MyAnnotationView.h"
@implementation MyAnnotationView
@synthesize centerOffset = _centerOffset;
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)setCenterOffset:(CGPoint)centerOffset {
_centerOffset = centerOffset;
}
@end
Run Code Online (Sandbox Code Playgroud)
不要错过@synthesize顶部的部分!
| 归档时间: |
|
| 查看次数: |
3649 次 |
| 最近记录: |