iOS Swift将SVG图像添加到Android按钮

Suj*_*U N 7 svg android image ios swift

在Android中,我们可以将SVG导入为Vector XML,将其用作Drawable,更改SVG图标的颜色并添加到按钮

void setSvgIcnForBtnFnc(Button setBtnVar, int setSvgVar, int setClrVar, String PosVar)
{
    Drawable DevDmjVar = getDrawable(setSvgVar);
    DevDmjVar.setBounds(0,0,Dpx24,Dpx24);
    DevDmjVar.setColorFilter(new PorterDuffColorFilter(setClrVar, PorterDuff.Mode.SRC_IN));
    switch (PosVar)
    {
        case "Tit" : setBtnVar.setCompoundDrawables(null, DevDmjVar, null, null); break;
        case "Rit" : setBtnVar.setCompoundDrawables(null, null, DevDmjVar, null); break;
        case "Pit" : setBtnVar.setCompoundDrawables(null, null, null, DevDmjVar); break;
        default: setBtnVar.setCompoundDrawables(DevDmjVar, null, null, null); break;
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何在swift for iphone中做到这一点?

setBtnVar.setImage(<image: UIImage?>, forState: <UIControlState>)
Run Code Online (Sandbox Code Playgroud)

Ale*_*pov 10

UPD:另见UseYourLoaf博客文章

刚刚在Erica Sadun博客文章中发现,在iOS 11上可以使用Vector Assets.

什么"矢量资产"意味着:

如果单击该框,矢量数据将随应用程序一起提供.一方面,这会使您的应用程序变得更大,因为矢量数据占用了一些空间.但另一方面,将为您提供缩放这些图像的机会,这可能在许多不同的情况下都很有用.所以,一个是,如果你知道这个特定的图像将用于多种尺寸.但这可能不太明显.因此,一个案例是一个符号字形,应该用动态类型调整大小.因为我们正在考虑动态类型,所以您还应该考虑使用类型调整大小旁边出现的字形.另一个非常不明显的案例是标签栏图像....我们强烈建议支持一个非常好的辅助功能,允许用户将其动态类型大小调高....因此,我们建议您这样做,以提高应用在所有用户中的可用性

如何使用:

  1. 将您的SVG文件转换为PDF,例如,在ZamZar.com上
  2. 将你的pdf添加到 Assets.xcassets
    • 单击导入的pdf的"保留矢量数据".
  3. UIImageView在您的创建UIViewController和分配pdf文件,如UIImage.

iOS <11

没有本地方式来使用SVG图像.

看看金刚鹦鹉

通过Cocoapod导入框架

pod "Macaw", "0.8.2"
Run Code Online (Sandbox Code Playgroud)

检查他们的示例项目:这是您呈现的方式tiger.svg(位于项目目录中,而不是在Assets.xcassets文件中)

import UIKit
import Macaw

class SVGExampleView: MacawView {

    required init?(coder aDecoder: NSCoder) {
        super.init(node: SVGParser.parse(path: "tiger"), coder: aDecoder)
    }

}
Run Code Online (Sandbox Code Playgroud)

当然还有其他一些第三方库:

  • 仅需注意:iOS11显然支持矢量(我将其假定为pdf),而无需首先将其渲染为图像。如果会有很多的话,可能会找到一种将它们转换为工作流的方法。 (2认同)