我正在为iOS 7.0+编写应用程序,而我想使用的新功能是imageWithRenderingMode。我有一个带有此代码的 map 注释:

-(MKAnnotationView*)annotationView {
    MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:self reuseIdentifier:@"AnnotationIdentifier"];
    annotationView.enabled = YES;
    annotationView.canShowCallout = YES;
    annotationView.image = [[UIImage imageNamed:@"star"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
    annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    annotationView.tintColor = [UIColor redColor];
    return annotationView;
}

我曾预计我的图钉将为红色,但保持黑色,只有标注(i)图标变为红色。

我试图在自己的self.view.tintColor中设置self.mapView.tintColorViewController,但这都不起作用。如何将这些针脚变成红色?

最佳答案

有一个比建议的解决方案更好的解决方案,它不涉及创建UIImageView

这个Swift代码将创建UIImage的彩色版本。

extension UIImage {

    func colorized(color : UIColor) -> UIImage {
        let rect = CGRectMake(0, 0, self.size.width, self.size.height);
        UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0);
        let context = UIGraphicsGetCurrentContext();
        CGContextSetBlendMode(context, .Multiply)
        CGContextDrawImage(context, rect, self.CGImage)
        CGContextClipToMask(context, rect, self.CGImage)
        CGContextSetFillColorWithColor(context, color.CGColor)
        CGContextFillRect(context, rect)
        let colorizedImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return colorizedImage
    }
}

这样称呼它:
UIImage(named: "myImage")!
    .imageWithRenderingMode(.AlwaysTemplate)
    .colorized(UIColor.red())

关于ios - 将TintColor设置为MKAnnotationView图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22694750/

10-11 18:12