我正在为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.tintColor
和ViewController
,但这都不起作用。如何将这些针脚变成红色? 最佳答案
有一个比建议的解决方案更好的解决方案,它不涉及创建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/