Пользовательский MKAnnotationView с рамкой, значком и изображением

Я искал аналогичное решение о том, как создать пользовательский MKAnnotationView, подобный этому.

введите описание изображения здесь

Я подклассифицировал MKAnnotation, и я смог добавить изображение под именем F.png F.png – это изображение кадра, как показано на картинке. я хочу добавить внутренний образ. (цветной синий на картинке, которую я рисую)

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation { if ([annotation isKindOfClass:[MKUserLocation class]]) return nil; static NSString* AnnotationIdentifier = @"AnnotationIdentifier"; MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier]; if(annotationView) return annotationView; else { MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier]; annotationView.canShowCallout = YES; annotationView.image = [UIImage imageNamed:[NSString stringWithFormat:@"F.png"]]; UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [rightButton addTarget:self action:@selector(writeSomething:) forControlEvents:UIControlEventTouchUpInside]; [rightButton setTitle:annotation.title forState:UIControlStateNormal]; annotationView.rightCalloutAccessoryView = rightButton; annotationView.canShowCallout = YES; annotationView.draggable = NO; return annotationView; } return nil; } 

здесь в вашем коде

 else { MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier]; annotationView.canShowCallout = YES; //change here annotationView.image = [UIImage imageNamed:[NSString stringWithFormat:@"F.png"]]; UIImage *frame = [UIImage imageNamed:[NSString stringWithFormat:@"F.png"]; UIImage *image = theImageInFrameInner; UIGraphicsBeginImageContext(CGSizeMake(pin.size.width, pin.size.height)); [frame drawInRect:CGRectMake(0, 0, frame.size.width, frame.size.height)]; [image drawInRect:CGRectMake(2, 2, 60, 60)]; // the frame your inner image //maybe you should draw the left bottom icon here, //then set back the new image, done annotationView.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [rightButton addTarget:self action:@selector(writeSomething:) forControlEvents:UIControlEventTouchUpInside]; [rightButton setTitle:annotation.title forState:UIControlStateNormal]; annotationView.rightCalloutAccessoryView = rightButton; annotationView.canShowCallout = YES; annotationView.draggable = NO; return annotationView; } 
 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { static NSString *AnnotationViewID = @"annotationViewID"; MKAnnotationView *annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID]; if (annotationView == nil) { annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID]; } UIImage *imgPinBorder = [UIImage imageNamed:@"pinBorder.png"]; UIImageView *imageViewPinBorder = [[UIImageView alloc] initWithImage:imgPinBorder]; imageViewPinBorder.center = annotationView.center; [annotationView addSubview:imageViewPinBorder]; UIImage *img = [UIImage imageNamed:@"myIcon.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage:img]; imageView.center = annotationView.center; [annotationView addSubview:imageView]; annotationView.annotation = annotation; UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [rightButton addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside]; [rightButton setTitle:annotation.title forState:UIControlStateNormal]; annotationView.rightCalloutAccessoryView = rightButton; annotationView.canShowCallout = YES; annotationView.draggable = NO; return annotationView; } 
  • Избегайте использования образа UIImageName - управления памятью
  • Autolayout - собственный размер UIButton не включает в себя вставки заголовков
  • Отключить авторотацию на iOS 7 для одного представленного ViewController
  • UIKit _wrapRunLoopWithAutoreleasePoolHandler + 36: иногда случается из отчета Crashlytics
  • Загрузка изображений асинхронной загрузки GCD UITableView, неправильные ячейки загружаются до загрузки нового изображения
  • Добавление кнопки «Очистить» на iPhone UITextField
  • Почему здесь не работает прокрутка импульса? (с использованием -webkit-overflow-scrolling: touch)
  • Как работает приложение с более низким базовым sdk?
  • Доступ к календарю UIDocumentInteractionController
  • Получить имя пользователя WPA2 Enterprise в iOS
  • Когда обновляется размер содержимого UITableView с анимацией вставки / удаления строки
  • Давайте будем гением компьютера.