[英]How to manage the resizing of a custom imported icon and sf symbol together in a common icon class?
我正在創建一個庫圖標 class ,它接收圖標名稱、標志“isSF”(此標志將說明圖標是否為 SF 符號)和圖標的大小。 我需要根據收到的大小值調整兩個圖標的大小。 我在這里面臨的問題是,對於 SF Symbols,我們可以使用 .font(.system(size: value)) 修飾符調整它的大小,但如何調整圖像(自定義圖標)的大小。
請幫助我。 提前致謝
struct XIcon: View {
var iconName: String
var isSF: Bool? = true
var size: CGFloat
var body: some View {
if isSF! {
return AnyView( Image(systemName: "\(iconName)")
.font(.system(size: size)))
} else {
return AnyView( Image(uiImage: UIImage(named: "\(iconName)")!).resizable())
}
}
}
同樣,我知道當我們指定大小時,執行向量 alignment 但對於 frame() 情況並非如此。 對於圖像縮放,有 scaleEffect() 但我不知道如何縮放圖像,使其與為 SF Symbol 指定的大小相等
這是可能的解決方案。 使用 Xcode 11.4 / iOS 13.4 測試
注意:邊框是為了更好地顯示尺寸
struct XIcon: View {
var iconName: String
var isSF: Bool? = true
var size: CGFloat
var body: some View {
var image: Image
if isSF! {
image = Image(systemName: "\(iconName)")
} else {
image = Image(uiImage: UIImage(named: "\(iconName)")!)
}
return image.resizable()
.frame(width: size, height: size).aspectRatio(contentMode: .fill)
}
}
struct TestXIcon: View {
var body: some View {
VStack {
XIcon(iconName: "tv", size: 100)
.border(Color.red)
XIcon(iconName: "icon", isSF: false, size: 100)
.border(Color.red)
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.