How to display .svg image using swift

前端 未结 13 891
你的背包
你的背包 2020-11-30 00:37

I have a .svg image file I want to display in my project.

I tried using UIImageView, which works for the .png & .jpg image formats, but not for the .svg extensi

13条回答
  •  情话喂你
    2020-11-30 00:48

    My solution to show .svg in UIImageView from URL. You need to install SVGKit pod

    Then just use it like this:

    import SVGKit
    
     let svg = URL(string: "https://openclipart.org/download/181651/manhammock.svg")!
     let data = try? Data(contentsOf: svg)
     let receivedimage: SVGKImage = SVGKImage(data: data)
     imageview.image = receivedimage.uiImage
    

    or you can use extension for async download

    extension UIImageView {
    func downloadedsvg(from url: URL, contentMode mode: UIView.ContentMode = .scaleAspectFit) {
        contentMode = mode
        URLSession.shared.dataTask(with: url) { data, response, error in
            guard
                let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
                let mimeType = response?.mimeType, mimeType.hasPrefix("image"),
                let data = data, error == nil,
                let receivedicon: SVGKImage = SVGKImage(data: data),
                let image = receivedicon.uiImage
                else { return }
            DispatchQueue.main.async() {
                self.image = image
            }
        }.resume()
    }
    }
    

    How to use:

    let svg = URL(string: "https://openclipart.org/download/181651/manhammock.svg")!
    
    imageview.downloadedsvg(from: svg)
    

提交回复
热议问题