更新
可以直接使用svg檔案, 調整下面設定可以直接用foregroundColor調整顏色.
專案下載
https://github.com/NullRa/SwiftUIWithSVG/blob/main/README.md
直接用比較簡單 以下都僅供參考
直接暴力使用SVG檔案
Image(uiImage: UIImage(named: "tab_home")!)
加入一個備用檔案避免optional crash
包裝成一個svgToImg function
private func svgToImg(svgNamed:String, preImgNamed:String) -> Image {
guard let uiImg = UIImage(named: svgNamed) else {
return Image(systemName: preImgNamed)
}
return Image(uiImage: uiImg)
}
使用svgToImg function
self.svgToImg(svgNamed: "tab_home2", preImgNamed: "house.fill")
.padding()
.background(Color.red)
.cornerRadius(30)
更進階的用法
調整svg檔案的圖片大小
private func svgToImg(svgNamed:String, preImgNamed:String) -> Image {
guard let uiImg = UIImage(named: svgNamed) else {
return Image(systemName: preImgNamed)
}
let width: CGFloat = 28
let size = CGSize(width: width, height: uiImg.size.height * width / uiImg.size.width)
let renderer = UIGraphicsImageRenderer(size: size)
let newImg = renderer.image { (context) in
uiImg.draw(in: renderer.format.bounds)
}
return Image(uiImage: newImg)
}
未解決的問題
無法直接調整svg檔案顏色,查過有個套件svgKit可以使用,有這方面需求可以往這方向去找答案.