繁体   English   中英

如何更改 ios 中 svg 图像的颜色?

[英]How to change color of svg images in ios?

我想更改 svg 图像的颜色。 我正在使用以下代码,它隐藏图像并用颜色集填充整个图像视图。

 self.badmintonImgView.tintColor = [UIColor orangeColor];

我需要改变图像的颜色。 请建议

如果SVGAssets.xcassets中,您可以告诉 Xcode 将图像视为图标:

首先,在资产目录中选择您的SVG图像

然后将渲染模式设置为模板图像

迅速

要使用 Swift 更改 SVG 的颜色:

badmintonImgView.image = badmintonImgView.image?.withRenderingMode(.alwaysTemplate)
badmintonImgView.tintColor = UIColor.orange

在此处输入图像描述

这对我有用:

UIImage * imageOrange = [[UIImage imageNamed:@"yourSVGImageName"] imageWithTintColor:UIColor.orangeColor];
UIImageView * yourImageView = [[UIImageView alloc] initWithImage: imageOrange];

请记住将图像添加到assets文件夹。 我希望它对你有帮助。

执行以下操作可能对您有用。

SVGKImage *svgImage = [SVGKImage imageNamed:@"YOURIMAGENAME"];
SVGKLayeredImageView *svgImageView = [[SVGKLayeredImageView alloc] initWithSVGKImage:svgImage];
[capturedImageView addSubview:svgImageView];

CALayer* layer = svgImageView.layer;
for (CALayer *subLayer in layer.sublayers) {

    for (CALayer *subSubLayer in subLayer.sublayers) {


        for (CALayer *subSubSubLayer in subSubLayer.sublayers) {

            if( [subSubSubLayer isKindOfClass:[CAShapeLayer class]]){
                CAShapeLayer* shapeLayer = (CAShapeLayer*)subSubSubLayer;
                shapeLayer.fillColor = [UIColor BlackColor].CGColor;
            }
        }
    }
}

试试这个 [self.badmintonImgView setTintColor:[UIColor redColor]];

为了发布 iOS 14.0+,我使用了 אורי orihpt 的答案,但意识到我必须执行一些与此处的其他答案不同的额外步骤。 使用Image时,我无法让tintColor工作,但foregroundColor对我有用。 我不知道您是否针对整个图像,但此解决方案仅针对 SVG 路径,而不是在图像上创建背景颜色(类似于 Marcy 的output图像)。

Image("imageName")
  .foregroundColor(Color.red)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM