簡體   English   中英

如何從 SF Symbol 創建一個灰色的 UIImage?

[英]How to create a gray UIImage from SF Symbol?

我有一個名為Contact的模型,帶有一個名為imageDataData類型的可選屬性,以及一個名為imageUIImage類型的計算屬性,它試圖從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM