簡體   English   中英

如何在通用圖標 class 中一起管理自定義導入圖標和 sf 符號的大小調整?

[英]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.

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