[英]How to create a gray UIImage from SF Symbol?
我有一個名為Contact
的模型,帶有一個名為imageData
的Data
類型的可選屬性,以及一個名為image
的UIImage
類型的計算屬性,它試圖從imageData
屬性啟動一個UIImage
,如果imageData
為 nil ,那么它會從 SF Symbols 啟動一個UIImage
。
我正在使用計算屬性image
通過調用Image(uiImage: contact.image)
在List
中顯示圖像。
就我而言, imageData
屬性為零。
我希望顏色是灰色的,但它是黑色的,我想為計算屬性內的圖像着色。
https://github.com/fawzialrifai/Contacts2
import SwiftUI
struct Contact: Identifiable {
var id = UUID()
var name: String
var imageData: Data?
var image: UIImage {
if let imageData = imageData {
return UIImage(data: imageData)!
} else {
return UIImage(systemName: "person.crop.circle.fill")!.withTintColor(.gray, renderingMode: .alwaysOriginal)
}
}
}
struct ContactList: View {
var contacts = [Contact(name: "Fawzi")]
var body: some View {
List(contacts) { contact in
HStack(alignment: .center) {
Image(uiImage: contact.image)
.resizable()
.scaledToFill()
.frame(width: 45, height: 45)
.clipShape(Circle())
Text(contact.name)
}
.padding(.vertical, 8)
}
}
}
return Image(systemName: "person.crop.circle.fill")
.renderingMode(.template)
.foregroundColor(.gray)
如果您想更改圖像的色調顏色,您應該使用渲染模式alwaysTemplate
嘗試更新以下行。
return UIImage(systemName: "person.crop.circle.fill")!.withTintColor(.gray, renderingMode: .alwaysTemplate)
這是另一種方法,如果你想使用Image.foregroundColor(.gray)
var avatarImage : Image {
if let imageData = imageData, let image = UIImage(data: imageData) {
return Image(uiImage: image)
} else {
return Image(systemName: "person.crop.circle.fill")
.foregroundColor(.gray) as! Image
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.