MKPinAnnotationView: Există mai mult de trei culori disponibile?

voturi
39

Potrivit docs Apple, de culoare PIN-ul MKPinAnnotationView este disponibil în culorile roșu, verde și violet. Există vreo modalitate de a obține, de asemenea, alte culori? Am găsit nimic în docs.

Întrebat 26/07/2009 la 22:32
sursa de către utilizator
În alte limbi...                            


9 răspunsuri

voturi
81

mai mult ;)

alt text http://lionel.gueganton.free.fr/pins/pinGray.pngintroduceți descrierea imaginii aiciintroduceți descrierea imaginii aici

alt text http://lionel.gueganton.free.fr/pins/pinOrange.pngintroduceți descrierea imaginii aiciintroduceți descrierea imaginii aici

Și cele originale:

alt text http://lionel.gueganton.free.fr/pins/pinGreen.png alt text introduceți descrierea imaginii aici

alt text http://lionel.gueganton.free.fr/pins/pinPurple.png alt text introduceți descrierea imaginii aici

alt text http://lionel.gueganton.free.fr/pins/pinRed.png alt text introduceți descrierea imaginii aici

Și codul:

- (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;
}
Publicat 14/01/2010 la 19:24
sursa de către utilizator

voturi
40

S-ar putea găsi următoarele imagini utile:

alt text alt text alt text alt text

și codul pentru a le utiliza în 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];
    }
    // ...
Publicat 26/12/2009 la 15:09
sursa de către utilizator

voturi
11

Ai putea folosi ZSPinAnnotationpentru a crea pini de adnotare pe zbor cu un specificat UIColor: https://github.com/nnhubbard/ZSPinAnnotation

Publicat 19/01/2012 la 19:57
sursa de către utilizator

voturi
8

Îmi place Răspunsul lui YoNeL dar doar un heads - up, atunci când creați un obicei MKAnnotationView, va trebui să alocați manual offset. Pentru imaginile YoNeL furnizate: (puteți lăsa lucrurile calloutButton dacă nu aveți nevoie de unul dintre cei)

#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;
}
Publicat 31/05/2010 la 18:59
sursa de către utilizator

voturi
4

Cu iOS 9, pinTintColora fost adăugat MKPinAnnotationView, permițându - vă să furnizeze o UIColorpentru culoarea pini.

Publicat 14/10/2015 la 13:29
sursa de către utilizator

voturi
4

Și aici este PSD pentru PIN-ul cu umbra și în @ 2x dimensiune.

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

Utilizați acest PSD pentru orice culoare doriti :)

Eu iau nici un credit pentru acest PSD. Tocmai l - am luat de la http://www.teehanlax.com/downloads/iphone-4-guid-psd-retina-display/ Ei au făcut o treabă minunată!

Publicat 23/12/2011 la 23:09
sursa de către utilizator

voturi
3

Nici una dintre soluțiile postate funcționează 100% dacă utilizați animația PIN-ul picătură. soluție canonadă este foarte elegant, deoarece permite PIN-ul să aibă în continuare ambele tipuri de capete (vârful ascuțit atunci când se încadrează și cea cu ondulație de hârtie circulară), dar, din păcate, o bucatica de culoare gămălie original poate fi văzut atunci când ricoșează pini ca hit-uri pe hartă. soluție yonel de înlocuire a întregii imagini PIN-ul înseamnă PIN-ul scade cu unda de hârtie circulară înainte de a lovi chiar harta!

Publicat 30/11/2010 la 21:39
sursa de către utilizator

voturi
2

Am încercat în acest fel și se pare a fi ok ...

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

folosind imaginea complet PIN-ul ... ca exemplu yonel

Publicat 18/11/2010 la 18:00
sursa de către utilizator

voturi
1

Dacă nu, nu e în docs, atunci cel mai probabil, aveți posibilitatea să utilizați mkannotationview și au propria ur imagine u dacă doresc, deși

Publicat 26/07/2009 la 23:19
sursa de către utilizator

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