我有一个里面有一个mapView的视图。我有一个自定义annotationView来标记用户位置。一切正常,但我已经意识到注释没有剪切到地图视图,因此,当我拖动地图时,它会越界。检查图片:
mapView启用了剪辑子视图。我认为这是我第一次发现这种行为。也许我从来没有在一个更大的视图中放置一张地图。我顺便针对iOS7。
编辑:这是代码。我想,没什么不寻常的。
在这里,我添加了自定义注释:
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
static NSString *const kAnnotationIdentifier = @"DYNAnnotationView";
DYNAnnotationView *annotationView = (DYNAnnotationView *)
[mapView dequeueReusableAnnotationViewWithIdentifier:kAnnotationIdentifier];
if (! annotationView)
{
annotationView = [[DYNAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:kAnnotationIdentifier];
}
[annotationView setAnnotation:annotation];
return annotationView;
}
这是自定义annotationView:
DYNAnnotation.h
#import <MapKit/MapKit.h>
@interface DYNAnnotationView : MKAnnotationView
- (id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier;
@end
DYNAnnotation.m
#import "DYNAnnotationView.h"
@implementation DYNAnnotationView
-(id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
if (self)
{
UIImage *image = [UIImage imageNamed:@"locationMark"];
CGRect frame = [self frame];
frame.size = [image size];
[self setFrame:frame];
[self setCenterOffset:CGPointMake(0.5f, 1.0f)];
[self setImage:image];
}
return self;
}
答案 0 :(得分:0)
行。毕竟解决方案很简单。我需要做的就是将mapView嵌入到另一个视图中,并将其剪辑子视图属性设置为YES。仍然不明白为什么地图视图不会处理这个问题。
希望这有助于某人。