MKPinAnnotationView: Er det mer enn tre farger tilgjengelig?

stemmer
39

Ifølge Apple docs, MKPinAnnotationView PIN farge er tilgjengelig i rødt, grønt og lilla. Er det noen måte å få andre farger også? Jeg har ikke funnet noe i docs.

Publisert på 26/07/2009 klokken 21:32
kilden bruker
På andre språk...                            


9 svar

stemmer
81

litt til ;)

alt tekst http://lionel.gueganton.free.fr/pins/pinGray.pngskriv bildebeskrivelse herskriv bildebeskrivelse her

alt tekst http://lionel.gueganton.free.fr/pins/pinOrange.pngskriv bildebeskrivelse herskriv bildebeskrivelse her

Og den opprinnelige seg:

alt tekst http://lionel.gueganton.free.fr/pins/pinGreen.png alt tekst skriv bildebeskrivelse her

alt tekst http://lionel.gueganton.free.fr/pins/pinPurple.png alt tekst skriv bildebeskrivelse her

alt tekst http://lionel.gueganton.free.fr/pins/pinRed.png alt tekst skriv bildebeskrivelse her

Og koden:

- (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;
}
Svarte 14/01/2010 kl. 18:24
kilden bruker

stemmer
40

Du kan finne disse bildene nyttig:

alt tekst alt tekst alt tekst alt tekst

og koden for å bruke dem i 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];
    }
    // ...
Svarte 26/12/2009 kl. 14:09
kilden bruker

stemmer
11

Du kan bruke ZSPinAnnotationtil å lage kommentar pins på fly med en spesifisert UIColor: https://github.com/nnhubbard/ZSPinAnnotation

Svarte 19/01/2012 kl. 18:57
kilden bruker

stemmer
8

Jeg liker Yonel svar , men bare en heads up, når du oppretter en tilpasset MKAnnotationView, må du tildele manuelt forskyvningen. For bildene Yonel følger: (du kan utelate calloutButton ting hvis du ikke trenger en av dem)

#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;
}
Svarte 31/05/2010 kl. 17:59
kilden bruker

stemmer
4

Med iOS 9, pinTintColorhar blitt lagt til MKPinAnnotationView, slik at du kan levere en UIColorfor pinnen farge.

Svarte 14/10/2015 kl. 13:29
kilden bruker

stemmer
4

Og her er det PSD for stiften med skygge og dens i @ 2x størrelse.

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

Bruk denne PSD for den fargen du vil :)

Jeg tar ingen kreditt for dette PSD. Jeg bare tok det fra http://www.teehanlax.com/downloads/iphone-4-guid-psd-retina-display/ De har gjort en fantastisk jobb!

Svarte 23/12/2011 kl. 22:09
kilden bruker

stemmer
3

Ingen av de postet løsninger fungere 100% hvis du bruker knappenål falle animasjon. Kanonade løsning er meget godt, fordi den gjør det mulig for stiften å fortsatt ha begge typer ender (den skarpe spissen ved fall, og den med den sirkulære papir krusning), men dessverre et glimt av den opprinnelige knappenålshode farge kan sees når pinne spretter som den treffer kartet. yonel løsning for å erstatte hele pinnen bildet betyr pinnen faller med sirkulære papir ringvirkninger før det er selv treffer kartet!

Svarte 30/11/2010 kl. 20:39
kilden bruker

stemmer
2

Jeg prøvde på denne måten, og det ser ut til å være ok ...

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

ved hjelp av full tappen bilde ... som yonel eksempelet

Svarte 18/11/2010 kl. 17:00
kilden bruker

stemmer
1

Hvis det ikke er i docs så mest sannsynlig ikke, kan du bruke mkannotationview og har ur eget bilde hvis u ønsker om

Svarte 26/07/2009 kl. 22:19
kilden bruker

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