精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊如何自定義 SwiftUI 中符號圖像的外觀

移動開發 移動應用
在SwiftUI中增強符號圖像可以顯著改善應用程序的外觀和感覺。通過調整大小、顏色、渲染模式、可變值和設計變體,我們可以創建使應用程序更直觀和視覺吸引力的圖標。

前言

符號圖像是來自 Apple的SF Symbols 庫的矢量圖標,設計用于在 Apple 平臺上使用。這些可縮放的圖像適應不同的大小和重量,確保在我們的應用程序中具有一致的高質量圖標。在 SwiftUI 中使用符號圖像非常簡單,只需使用 Image 視圖和所需符號的系統名稱。下面是一個快速示例:

import SwiftUI

struct ContentView: View {
    var body: some View {
        Image(systemName: "star")
    }
}

圖片圖片

大小

盡管符號被放置在Image視圖中,但它應被視為文本。要調整符號的大小,我們可以應用 font() 修飾符,就像在Text視圖中一樣。這使我們能夠將符號的大小與不同的文本樣式對齊,確保UI的視覺一致性。

HStack {
    Image(systemName: "star")
        .font(.title)
    
    Image(systemName: "star")
        .font(.body)
    
    Image(systemName: "star")
        .font(.caption)
}

圖片圖片

我們可以使用 fontWeight() 修飾符來調整符號的重量。這個修飾符改變符號筆畫的粗細,使我們能夠將符號與周圍的文本匹配或對比。

HStack {
    Image(systemName: "star")
        .fontWeight(.light)
    
    Image(systemName: "star")
        .fontWeight(.bold)
    
    Image(systemName: "star")
        .fontWeight(.black)
}

圖片圖片

要根據字體大小相對縮放圖像,我們應該使用 imageScale() 修飾符。有三個選項:小、中、大,它們根據字體大小按比例縮放符號。如果沒有明確設置字體,符號將從當前環境中繼承字體。

HStack {
    Image(systemName: "star")
        .imageScale(.small)
    
    Image(systemName: "star")
        .imageScale(.medium)
    
    Image(systemName: "star")
        .imageScale(.large)
}
.font(.headline)

圖片圖片

不建議通過應用resizable()修飾符并設置框架來調整符號圖像的大小,因為這樣做會使圖像停止作為符號圖像,從而影響其與文本的布局和對齊。

顏色

使用SwiftUI中的foregroundStyle()視圖修飾符,可以輕松自定義符號圖像的顏色。這個修飾符允許我們直接設置符號圖像的顏色。

Image(systemName: "star")
    .foregroundStyle(.orange)

圖片圖片

foregroundStyle() 修飾符可以采用任何 ShapeStyle,包括漸變,這為我們的符號圖像提供了廣泛的自定義可能性。在這個例子中,星形符號使用了從黃色到紅色的線性漸變,從頂部到底部過渡。

Image(systemName: "star")
    .foregroundStyle(
        LinearGradient(
            colors: [.yellow, .red],
            startPoint: .top,
            endPoint: .bottom
        )
    )

圖片圖片

渲染模式

我們可以通過使用不同的渲染模式進一步自定義符號圖像的外觀。SF Symbols有四種不同的渲染模式,這些模式會改變符號的顏色和外觀。一些渲染模式使整個圖標保持相同顏色,而其他模式則允許多種顏色。

要在SwiftUI中設置符號圖像的首選渲染模式,我們使用 symbolRenderingMode() 修飾符。

單色

單色是默認的渲染模式。在這種模式下,符號的每一層都是相同的顏色。

Image(systemName: "thermometer.snowflake")
    .symbolRenderingMode(.monochrome)

圖片

分層

分層模式將符號渲染為多個層,每層應用不同的不透明度。層次結構和不透明度在每個符號中是預定義的,但我們仍然可以使用 foregroundStyle() 修飾符自定義顏色。

HStack {
    Image(systemName: "thermometer.snowflake")
    Image(systemName: "thermometer.snowflake")
        .foregroundStyle(.indigo)
}
.symbolRenderingMode(.hierarchical)

symbolRenderingMode() 修飾符既可以直接應用于圖像視圖,也可以通過將其應用于包含多個符號圖像的父視圖來在環境中設置。這樣,父元素內的所有符號圖像都會受到影響。

圖片圖片

調色板

調色板模式允許符號以多層呈現,每層具有不同的顏色。這種模式非常適合創建色彩豐富的多層圖標。

Image(systemName: "thermometer.snowflake")
    .symbolRenderingMode(.palette)
    .foregroundStyle(.blue, .teal, .gray)

我們不需要顯式地指定調色板呈現模式。如果我們在 foregroundStyle() 修飾符中應用多個樣式,則調色板模式將自動激活。

Image(systemName: "thermometer.snowflake")
    .foregroundStyle(.blue, .teal, .gray)

圖片圖片

如果我們為一個定義了三個層次結構的符號指定兩種顏色,那么第二層和第三層將使用相同的顏色。

Image(systemName: "thermometer.snowflake")
    .foregroundStyle(.blue, .gray)

圖片圖片

多色

多色模式使用由 Apple 定義的一組固定顏色渲染符號。在使用多色渲染時,我們無法自定義符號的顏色,它將使用預定義的顏色。

HStack {
    Image(systemName: "thermometer.snowflake")
    Image(systemName: "thermometer.sun.fill")
}
.symbolRenderingMode(.multicolor)

圖片圖片

值得注意的是,由于這些顏色是固定的,它們不適應明暗模式。例如,我們的溫度計符號具有白色輪廓,在白色背景上是不可見的。

并非所有符號都支持每種呈現模式。圖層較少的符號在不同模式下看起來可能相同,分層和調色板模式看起來類似于單色。

可變值

在 SwiftUI 中顯示符號圖像時,我們可以提供一個 0.0 到 1.0 之間的可選值,渲染的圖像可以使用它來自定義外觀。如果符號不支持可變值,此參數無效。我們應該在 SF Symbols 應用程序中檢查哪些符號支持可變值。

HStack {
    Image(systemName: "speaker.wave.3", variableValue: 0)
    Image(systemName: "speaker.wave.3", variableValue: 0.3)
    Image(systemName: "speaker.wave.3", variableValue: 0.6)
    Image(systemName: "speaker.wave.3", variableValue: 0.9)
}

圖片圖片

可變值可以表示一個隨著時間變化的特性,例如容量或強度。這使得符號的外觀可以根據應用程序的狀態動態變化。

struct ContentView: View {
    @State private var value = 0.5
    
    var body: some View {
        VStack {
            Image(
                systemName: "speaker.wave.3",
                variableValue: value
            )
            Slider(value: $value, in: 0...1)
                .padding()
        }
        .padding()
    }
}

在這個例子中,符號 speaker.wave.3 根據 Slider 提供的值改變其外觀。

圖片圖片

我們應該使用可變值來傳達狀態的變化,例如音量、電池電量或信號強度,為用戶提供動態狀態的清晰視覺表示。為了傳達深度和視覺層次,我們應該使用分層渲染模式,它可以提升某些圖層,并區分符號內的前景和背景元素。

設計變體

符號可以有不同的設計變體,例如填充和斜杠,以幫助傳達特定的狀態和操作。斜杠變體可以表示項目或操作不可用,而填充變體可以表示選擇。

在 SwiftUI 中,我們可以使用 symbolVariant() 修飾符來應用這些變體。

HStack {
    Image(systemName: "heart")
    
    Image(systemName: "heart")
        .symbolVariant(.slash)
    
    Image(systemName: "heart")
        .symbolVariant(.fill)
}

不同的符號變體用于各種設計目的。輪廓變體在工具欄、導航欄和列表中非常有效,而填充變體則用于強調選擇的狀態。

HStack {
    Image(systemName: "heart")
        .symbolVariant(.circle)
    
    Image(systemName: "heart")
        .symbolVariant(.square)
    
    Image(systemName: "heart")
        .symbolVariant(.rectangle)
}

不同的符號變體具有不同的設計用途。輪廓變體在工具欄、導航欄和列表中非常有效,因為這些地方通常會與文本一起顯示符號。將符號封裝在圓形或方形等形狀中可以增強其可讀性,特別是在較小尺寸下。填充變體由于其實心區域,使符號更具視覺強調性,非常適合用于 iOS 標簽欄、滑動操作以及指示選擇的強調顏色場景。

在許多情況下,顯示符號的視圖會自動選擇合適的變體。例如,iOS 標簽欄通常使用填充變體,而導航欄則偏好輪廓變體。這種自動選擇確保符號在不同上下文中有效使用,而無需明確指定。

示例代碼

import SwiftUI

struct ContentView: View {
    @State private var value = 0.5
    
    var body: some View {
        VStack {
            Image(
                systemName: "speaker.wave.3",
                variableValue: value
            )
            .symbolRenderingMode(.hierarchical)
            .foregroundStyle(.blue)
            Slider(value: $value, in: 0...1)
                .padding()
        }
        .padding()
    }
}

運行 Demo

  1. 打開Xcode并創建一個新的 SwiftUI 項目。
  2. 將上述代碼粘貼到 ContentView.swift 文件中。
  3. 運行項目,查看效果。

結論

在SwiftUI中增強符號圖像可以顯著改善應用程序的外觀和感覺。通過調整大小、顏色、渲染模式、可變值和設計變體,我們可以創建使應用程序更直觀和視覺吸引力的圖標。SwiftUI使這些調整變得簡單易行,使我們能夠輕松實現和改進這些自定義以提供更好的用戶體驗。

責任編輯:武曉燕 來源: Swift社區
相關推薦

2022-06-06 09:01:16

SwiftUI自定義導航

2023-01-03 07:40:27

自定義滑塊組件

2024-06-03 10:00:51

Vue 3語法插槽

2021-08-09 10:31:33

自定義授權響應

2009-11-23 20:13:33

ibmdwLotus

2022-09-07 15:57:41

KubernetesCRD

2011-08-09 17:16:56

CoreAnimati動畫

2021-11-23 15:06:42

Kubernetes 運維開源

2013-06-27 11:10:01

iOS開發自定義UISlider

2023-11-01 08:01:04

SpringWeb容器

2010-05-11 13:16:21

Unix awk

2020-11-19 10:50:43

ImportPython代碼

2021-03-16 10:39:29

SpringBoot參數解析器

2018-07-17 14:47:55

Windows 10Windows任務欄

2021-07-01 11:07:49

Swift 自定義操作符

2019-12-02 21:29:45

Keras神經網絡TensorFlow

2011-09-05 18:54:03

windowsUbuntu

2011-06-15 09:24:36

Qt Widget Model

2021-07-16 11:00:40

Django用戶模型Python

2009-09-07 22:00:15

LINQ自定義
點贊
收藏

51CTO技術棧公眾號

丝袜一区二区三区| 亚洲一区在线观看免费| 国产精品久久久久久五月尺| a一级免费视频| 在线一区二区三区视频| 日韩欧美精品免费在线| 中文字幕欧美人与畜| 蜜臀av在线观看| 日韩高清不卡在线| 欧美第一页在线| 手机免费看av| 91蜜桃臀久久一区二区| 在线观看日韩毛片| 被灌满精子的波多野结衣| 国产一级在线| 成人一区二区三区中文字幕| 国产精品福利在线观看网址| 国产性一乱一性一伧一色| 国产一区三区在线播放| 欧美成人福利视频| 欧美精品久久久久久久久25p| japanese色国产在线看视频| 国产精品白丝在线| 欧美日本亚洲| 欧美熟妇乱码在线一区 | 国产成人手机视频| а√天堂资源官网在线资源| 亚洲男同性恋视频| 日韩久久久久久久久久久久久| www.天天干.com| 美女视频黄 久久| 情事1991在线| 国产精品111| 午夜视频精品| 爽爽爽爽爽爽爽成人免费观看| 黄色在线观看av| 精品国产影院| 欧美成人一区二区三区| 亚洲免费黄色录像| 成人精品动漫| 在线看国产一区二区| 男人日女人下面视频| 久久久久黄久久免费漫画| 亚洲色图欧洲色图婷婷| 亚洲一区二区三区四区中文| 国产精品一级伦理| 久久久久国产精品人| 久久综合狠狠综合久久综青草| 三级网站在线看| 波多野结衣视频一区| av在线不卡一区| 能看的毛片网站| www555久久| 成人av免费观看| http;//www.99re视频| 国产美女永久免费| 国精品**一区二区三区在线蜜桃| 国产精品久久97| 香蕉污视频在线观看| 久久一区二区三区四区五区| 青青草精品毛片| 青青视频在线免费观看| 久久国产欧美| 国产aⅴ夜夜欢一区二区三区| 日韩特级黄色片| 久久久水蜜桃av免费网站| 欧美在线中文字幕| 国产又粗又猛又黄视频| 日韩福利电影在线| 国产日韩av在线播放| 国产理论视频在线观看| 国产成人啪免费观看软件| 国产精品免费区二区三区观看| 欧美 日韩 中文字幕| 久久色.com| 亚洲视频在线观看日本a| 巨大荫蒂视频欧美另类大| 亚洲卡通动漫在线| 亚洲国产成人精品无码区99| 成人免费网站视频| 欧美天堂一区二区三区| 五月六月丁香婷婷| 国产精品一区二区中文字幕 | 亚洲18在线看污www麻豆| 日本免费一区二区视频| 亚洲激情视频在线观看| 免费在线观看a视频| 亚洲精品一二三区区别| 午夜精品一区二区三区在线视频| 亚洲s码欧洲m码国产av| 九色综合狠狠综合久久| 激情小说网站亚洲综合网 | 日韩免费观看视频| 国产福利久久| 国产毛片一区二区三区va在线| 国产经典欧美精品| 欧美日韩最好看的视频| 亚洲1卡2卡3卡4卡乱码精品| 亚洲一二三级电影| 免费毛片网站在线观看| 日韩精品一区二区av| 亚洲欧美日本日韩| 91免费综合在线| 亚洲 美腿 欧美 偷拍| 国产精品狼人久久影院观看方式| 欧美无砖专区免费| 国产精品久久久久久久久免费高清| 日韩欧美国产综合| av电影网站在线观看| 欧美黄色大片网站| 国产精品久久一| 手机看片1024国产| 亚洲色图一区二区三区| 国产女女做受ⅹxx高潮| 欧美国产亚洲精品| 中文一区二区视频| 国产成人自拍视频在线| 国产毛片精品视频| 午夜精品一区二区三区四区| 91九色在线播放| 日韩视频一区二区三区在线播放 | 久久亚洲精华国产精华液| 二级片在线观看| 日韩精品三区| 日韩电影中文字幕在线观看| 放荡的美妇在线播放| 日日骚欧美日韩| 精品国产一区二区三区四区精华| jizzjizz亚洲| 97精品久久久午夜一区二区三区| 亚洲视频小说| 色豆豆成人网| 日韩电视剧免费观看网站| 欧美日韩黄色网| 青草av.久久免费一区| 欧美大香线蕉线伊人久久| 免费在线观看av电影| 欧美一区二区免费观在线| 少妇太紧太爽又黄又硬又爽小说| 久久久久欧美精品| 蜜桃视频在线观看91| 大桥未久在线视频| 亚洲国产成人精品久久| 久久久久久久伊人| 国产ts人妖一区二区| 欧洲精品视频在线| 国产剧情一区二区在线观看| 播播国产欧美激情| 国产三级伦理片| 亚洲欧美色图小说| 在线视频日韩欧美| 综合激情婷婷| 99伊人久久| 波多野结衣中文字幕久久| 精品福利av导航| 国产主播在线观看| av在线综合网| 丰满少妇被猛烈进入高清播放| 欧美人成在线观看ccc36| 91精品国产色综合久久不卡98口 | 成年人三级视频| 国产日韩欧美中文在线| 欧美日韩国产成人| 高h放荡受浪受bl| 亚洲国产欧美一区二区三区丁香婷| 国产国语老龄妇女a片| 亚洲青涩在线| 国产精品久久久久久久久久小说| 国内在线免费高清视频| 在线观看视频欧美| 久艹在线观看视频| 国产成人精品免费| 99精品在线免费视频| 国模吧精品视频| 成人免费淫片aa视频免费| 天天干免费视频| 色综合天天综合色综合av| 亚洲一级黄色录像| 国产美女精品人人做人人爽 | 中文字幕在线观看网站| 亚洲电影免费观看高清| 国产一级免费视频| 国产精品大尺度| 美国黄色一级视频| 国产欧美一区二区色老头| 日本不卡一区二区三区视频| 久久婷婷五月综合色丁香| 欧美成人精品影院| 欧美日韩国产中文字幕在线| 欧美色老头old∨ideo| 久久免费视频播放| 国产欧美日韩在线看| 国产老头和老头xxxx×| 男人的天堂成人在线| 中文字幕一区二区三区最新| 国产一区调教| 国产精品视频xxxx| 国产污视频在线播放| 中文字幕亚洲欧美一区二区三区| 亚洲乱码国产乱码精品精软件| 色综合天天在线| 麻豆视频在线观看| 中文字幕av一区二区三区高| 99久久免费看精品国产一区 | 黑人巨大精品欧美一区二区三区 | 无码h黄肉3d动漫在线观看| 在线观看亚洲专区| 日韩美女黄色片| 国产精品的网站| 一卡二卡三卡四卡| 大桥未久av一区二区三区中文| www日韩在线观看| 影音先锋久久精品| 国产成人精品免费看在线播放 | 一区二区三区在线视频111| 粉嫩精品导航导航| 5566av亚洲| 日本久久一区| 国产suv精品一区二区| 日本高清在线观看| 日韩在线视频网站| 韩国中文字幕2020精品| 日韩电影免费观看在线观看| va视频在线观看| 欧美日韩亚洲高清一区二区| 99久久久久久久久| 欧美日韩国产精品一区| 久久久久99精品| 一区二区三区在线视频观看58 | 国产成人精品久久二区二区91| 三级网站视频在在线播放| 久久九九热免费视频| 五月婷婷在线视频| 在线播放日韩精品| 成人高清免费观看mv| 亚洲视频在线观看视频| 天天综合网在线观看| 欧美va天堂va视频va在线| 99在线观看免费| 日韩一区二区在线观看视频| 夜夜躁狠狠躁日日躁av| 欧美日韩国产123区| 自拍偷拍第八页| 欧美偷拍一区二区| 特级西西444www大胆免费看| 一本大道久久a久久综合婷婷 | 欧美男生操女生| 亚洲精品91天天久久人人| 在线一区二区三区做爰视频网站| 波多野结衣啪啪| 日韩欧美在线视频观看| 无码人妻精品一区二区三区不卡 | 亚洲欧洲av在线| 日本伦理一区二区三区| 亚洲视频免费在线观看| 久久中文免费视频| 亚洲一级在线观看| 国产性xxxx高清| 欧美日韩午夜激情| 无码人妻精品一区二区| 欧美日韩三级一区| 国产精品无码久久久久成人app| 91精品国产高清一区二区三区蜜臀| 国产精品伦理一区| 欧美岛国在线观看| 神宫寺奈绪一区二区三区| 亚洲男人的天堂在线| 国产51人人成人人人人爽色哟哟| 中文日韩在线视频| 91小视频xxxx网站在线| 午夜免费日韩视频| 欧美18av| 亚洲a级在线播放观看| 成人福利免费在线观看| 欧美视频1区| 97视频精品| 精品视频在线观看一区| 日韩精品一级中文字幕精品视频免费观看| 一路向西2在线观看| 国产高清在线精品| 无码人妻精品一区二区三区温州 | 巨茎人妖videos另类| 国产精品久久久久999| 国产午夜精品一区在线观看| 国产麻豆日韩| 日韩电影免费网址| 免费人成自慰网站| 日韩1区2区日韩1区2区| 午夜免费视频网站| 99久久久久免费精品国产 | 国产成人精品国内自产拍免费看| 91麻豆精品国产综合久久久| 国产伦理一区二区三区| 日韩精品永久网址| 给我免费播放片在线观看| 日日噜噜夜夜狠狠视频欧美人 | 久久夜色精品国产欧美乱极品| 很污很黄的网站| 午夜不卡av在线| 一区二区三区www污污污网站| 亚洲成人久久一区| 韩国中文字幕在线| 奇米四色中文综合久久| 亚洲精品观看| 亚洲一区二区免费视频软件合集| 国产情侣一区| 少妇高潮一69aⅹ| 欧美国产激情二区三区 | 国产欧美日本| 五月天中文字幕在线| 久久综合色8888| 国产小视频在线观看免费| 欧美日韩一级视频| 亚洲区小说区图片区| 久久91亚洲精品中文字幕奶水| 91大神在线观看线路一区| 极品校花啪啪激情久久| 综合久久精品| www.超碰97.com| 欧美韩国一区二区| 成年人免费高清视频| 日韩久久精品一区| 看女生喷水的网站在线观看| 国产精品电影久久久久电影网| 欧美日韩直播| 久久亚洲精品无码va白人极品| 激情欧美一区二区三区在线观看| brazzers精品成人一区| 婷婷国产在线综合| 国产乡下妇女做爰视频| 欧美一区二区三区四区在线观看| 国产精品一级伦理| 日韩免费av片在线观看| 综合伊思人在钱三区| 国产二级片在线观看| 福利电影一区二区| 青青草免费av| 51精品国自产在线| 成人午夜在线影视| 91在线观看免费高清完整版在线观看| 精品日韩一区| 亚洲男人天堂色| 国产片一区二区| 国产精品第6页| 在线观看中文字幕亚洲| 亚洲综合在线电影| 亚洲一区三区视频在线观看| 美女网站一区二区| 小向美奈子av| 91精品国产一区二区三区香蕉| 国产鲁鲁视频在线观看特色| 成人免费激情视频| 中文字幕一区二区三区欧美日韩| 一二三级黄色片| 亚洲精品日韩一| 亚洲经典一区二区| 久久久久久久国产精品视频| 国产毛片久久久| 日韩免费毛片视频| 国产欧美精品日韩区二区麻豆天美| 亚洲精品毛片一区二区三区| 中文字幕综合一区| 久久99精品久久久野外观看| 成人黄色大片网站| 久久蜜桃一区二区| 在线播放国产一区| 欧美成年人视频网站| 风间由美中文字幕在线看视频国产欧美| 99在线免费视频观看| 99精品热视频| 欧美在线视频精品| 理论片在线不卡免费观看| 国产精品videossex| 99久久激情视频| 国产欧美一区二区精品久导航 | 欧美精品一区二区在线观看| 交100部在线观看| 色综合久久久久久久久五月| 狠狠v欧美v日韩v亚洲ⅴ| 久久精品视频6| 亚洲香蕉成人av网站在线观看| 97精品资源在线观看| 91午夜在线观看| 国产日韩欧美a| av网站在线观看免费| 欧美在线一级视频| 亚洲国产精品日韩专区av有中文| 最新版天堂资源在线| 欧美亚洲尤物久久| a'aaa级片在线观看| 午夜精品区一区二区三| 成人听书哪个软件好| 久久亚洲精品石原莉奈| 美女国内精品自产拍在线播放| 日本妇女一区| 国产精品久久久久久久av福利| 亚洲成av人影院| 亚洲s色大片| 免费成人av网站| 国产在线观看免费一区|