MKPinAnnotationView: Есть ли более трех доступных цветов?

голоса
39

Согласно документации Apple, контактный цвет MKPinAnnotationView доступен в красный, зеленый и фиолетовый. Есть ли способ, чтобы получить другие цвета также? Я не нашел ничего в документации.

Задан 26/07/2009 в 22:32
источник пользователем
На других языках...                            


9 ответов

голоса
81

еще немного ;)

альтернативный текст http://lionel.gueganton.free.fr/pins/pinGray.pngвведите описание изображения здесьвведите описание изображения здесь

альтернативный текст http://lionel.gueganton.free.fr/pins/pinOrange.pngвведите описание изображения здесьвведите описание изображения здесь

И оригинальные из них:

альтернативный текст http://lionel.gueganton.free.fr/pins/pinGreen.png альтернативный текст введите описание изображения здесь

альтернативный текст http://lionel.gueganton.free.fr/pins/pinPurple.png альтернативный текст введите описание изображения здесь

альтернативный текст http://lionel.gueganton.free.fr/pins/pinRed.png альтернативный текст введите описание изображения здесь

И код:

- (MKAnnotationView*)mapView:(MKMapView*)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView* anView =[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"test"];
anView.pinColor=MKPinAnnotationColorPurple;
UIImage* image = nil;
// 2.0 is for retina. Use 3.0 for iPhone6+, 1.0 for "classic" res.
UIGraphicsBeginImageContextWithOptions(anView.frame.size, NO, 2.0);
[anView.layer renderInContext: UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData* imgData = UIImagePNGRepresentation(image);
NSString* targetPath = [NSString stringWithFormat:@"%@/%@", [self writablePath], @"thisismypin.png" ];
[imgData writeToFile:targetPath atomically:YES]; 
return anView;
}

-(NSString*) writablePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return documentsDirectory;
}
Ответил 14/01/2010 в 19:24
источник пользователем

голоса
40

Вы можете найти следующие изображения полезны:

альтернативный текст альтернативный текст альтернативный текст альтернативный текст

и код , чтобы использовать их в viewForAnnotation :

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{   
    // ... get the annotation delegate and allocate the MKAnnotationView (annView)
    if ([annotationDelegate.type localizedCaseInsensitiveCompare:@"NeedsBluePin"] == NSOrderedSame)
    {
        UIImage * image = [UIImage imageNamed:@"blue_pin.png"];
        UIImageView *imageView = [[[UIImageView alloc] initWithImage:image] autorelease];
        [annView addSubview:imageView];
    }
    // ...
Ответил 26/12/2009 в 15:09
источник пользователем

голоса
11

Вы можете использовать ZSPinAnnotationдля создания аннотаций контактов на лета с указанием UIColor: https://github.com/nnhubbard/ZSPinAnnotation

Ответил 19/01/2012 в 19:57
источник пользователем

голоса
8

Мне нравится ответ Yonel в но только головы, когда вы создаете пользовательский MKAnnotationView, вам придется вручную присвоить смещение. Для изображений Yonel условии , что : (вы можете оставить из calloutButton вещи , если вы не нуждаетесь в одном из них)

#pragma mark MKMapViewDelegate
- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    if(![annotation isKindOfClass:[MyAnnotation class]]) // Don't mess user location
        return nil;

    MKAnnotationView *annotationView = [aMapView dequeueReusableAnnotationViewWithIdentifier:@"spot"];
    if(!annotationView)
    {
        annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"spot"];
        annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        [(UIButton *)annotationView.rightCalloutAccessoryView addTarget:self action:@selector(openSpot:) forControlEvents:UIControlEventTouchUpInside];
        annotationView.enabled = YES;
        annotationView.canShowCallout = YES;
        annotationView.centerOffset = CGPointMake(7,-15);
        annotationView.calloutOffset = CGPointMake(-8,0);
    }

    // Setup annotation view
    annotationView.image = [UIImage imageNamed:@"pinYellow.png"]; // Or whatever

    return annotationView;
}
Ответил 31/05/2010 в 18:59
источник пользователем

голоса
4

С прошивкой 9, pinTintColorбыло добавлено MKPinAnnotationView, что позволяет поставлять UIColorдля штыря цвета.

Ответил 14/10/2015 в 13:29
источник пользователем

голоса
4

А вот PSD для штыря с тенью и его в @ 2x размера.

http://dl.dropbox.com/u/5622711/ios-pin.psd

Используйте этот PSD для любого цвета вы хотите :)

Я не принимаю кредит на эту PSD. Я просто схватил его от http://www.teehanlax.com/downloads/iphone-4-guid-psd-retina-display/ Они проделали замечательную работу!

Ответил 23/12/2011 в 23:09
источник пользователем

голоса
3

Ни один из посланных решений работают на 100%, если вы используете контактное падение анимацию. Решение Cannonade является очень аккуратно, поскольку она позволяет штифту до сих пор оба вида концов (острие при падении и один с круговой бумажной пульсацией), но, к сожалению, проблеском оригинального булавочной головкой цвета можно увидеть, когда контактный отскакивает как она попадает на карту. Решение yonel о замене всего штырьковых изображений означает, что штифт падает с круглой бумажной пульсацией, прежде чем он даже попал на карту!

Ответил 30/11/2010 в 21:39
источник пользователем

голоса
2

Я попробовал этот путь, и это, кажется, будет хорошо ...

UIImage * image = [UIImage imageNamed:@"blue_pin.png"];
        UIImageView *imageView = [[[UIImageView alloc] initWithImage:image]
                                 autorelease];
        [annotationView addSubview:imageView];
        annotationView = nil;

используя Палец изображение ... как yonel пример

Ответил 18/11/2010 в 18:00
источник пользователем

голоса
1

Если это не в документации, то, скорее всего, нет, вы можете использовать mkannotationview и иметь ур собственное изображение, если и хотите хотя

Ответил 26/07/2009 в 23:19
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more