UIButtonTypeDetailDisclosure Color Change

He cambiado la image de UIButtonTypeDetailDisclosure a la image a continuación, pero el problema es que la image se vuelve de color azul. ¿Dónde estaría mi problema?

 - (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation { *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [infoButton setImage:[UIImage imageNamed:@"carcar.png"] forState: UIControlStateNormal]; pinView.rightCalloutAccessoryView = infoButton; } 

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Última actualización: resuelto con el último infoButton.frame.

  UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeCustom]; UIImage *carImage = [UIImage imageNamed:@"carcar.png"]; if ([carImage respondsToSelector:@selector(imageWithRenderingMode:)]) { carImage = [carImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; } [infoButton setImage:carImage forState: UIControlStateNormal]; infoButton.frame = CGRectMake(0, 0, 32, 32); pinView.rightCalloutAccessoryView = infoButton; 

Use un tipo de button personalizado:

 infoButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

Si desea agregar su propia image, siempre debe usar este método. Los otros types son para botones pnetworkingefinidos (como información, agregar contacto, etc.)

Tuve un problema similar y lo resolví de la siguiente manera (utilizando su código):

 UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [infoButton setTintColor:[UIColor clearColor]]; UIImage *carImage = [[UIImage imageNamed:@"carcar.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; [infoButton setBackgroundImage:carImage forState:UIControlStateNormal]; 

Parece que iOS 7 trata su image como una plantilla. Intenta replace

 [infoButton setImage:[UIImage imageNamed:@"carcar.png"] forState: UIControlStateNormal]; 

con

 UIImage *carImage = [UIImage imageNamed:@"carcar.png"]; if ([carImage respondsToSelector:@selector(imageWithRenderingMode:)]) { carImage = [carImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; } [infoButton setImage:carImage forState: UIControlStateNormal]; 

Necesita usar un tipo de button diferente y establecer su marco.

No ve nada porque el marco de su button es cero (para UIButtonTypeCustom). Por lo tanto, para solucionar su problema puede:

 infoButton = [UIButton buttonWithType:UIButtonTypeCustom]; // set image [infoButton setImage:yourImage forState:UIControlStateNormal]; // More elegant then setting hardcoded frame [infoButton sizeToFit]; 

Utilizar esta

 static NSString * const identifier = @"MyCustomAnnotation"; MKAnnotationView* annotationView = [mapView1 dequeueReusableAnnotationViewWithIdentifier:identifier]; if (annotationView) { annotationView.annotation = annotation; } else { annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier]; } //left image view UIImageView *imageIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"car.png"]]; annotationView.leftCalloutAccessoryView = imageIcon; //right button with image UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [infoButton setTintColor:[UIColor clearColor]]; UIImage *carImage = [[UIImage imageNamed:@"Search.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; [infoButton setBackgroundImage:carImage forState:UIControlStateNormal]; annotationView.rightCalloutAccessoryView = infoButton; annotationView.image = [UIImage imageNamed:@"pin_image.png"]; annotationView.canShowCallout = YES; return annotationView;