SwiftUI組件大全

Text組件:用于顯示文本內(nèi)容

示例1:Text("Hello, World!")霉颠,顯示"Hello, World!"文本
示例2:Text("Your score is (score)")对碌,顯示帶變量的文本,其中score是一個整數(shù)變量

SecureField組件:用于輸入敏感信息(例如密碼)的文本框

示例1:SecureField("Password", text: $password)蒿偎,創(chuàng)建一個帶有“Password”標簽的安全文本框朽们,用戶可以在其中輸入密碼。此示例中的$password是一個綁定變量诉位,它將保存用戶輸入的密碼骑脱。
示例2:SecureField("", text: $password).textFieldStyle(RoundedBorderTextFieldStyle()), 創(chuàng)建一個帶有圓角邊框樣式的安全文本框,沒有標簽苍糠,用戶可以在其中輸入密碼叁丧。這個例子展示了如何使用textFieldStyle()方法來應(yīng)用自定義文本框樣式。

Label組件:用于將標簽與內(nèi)容組合在一起

示例1:Label("Save", systemImage: "square.and.arrow.down"), 創(chuàng)建一個帶有系統(tǒng)圖像“square.and.arrow.down”的標簽岳瞭,“Save”是標簽的文本內(nèi)容拥娄。
示例2:Label { Text("Edit") Text("Document") } icon: { Image(systemName: "doc") }, 創(chuàng)建一個標簽,其中包含文本“Edit”和“Document”瞳筏,以及系統(tǒng)圖像“doc”稚瘾。

Image組件:用于顯示圖像

示例1:Image("example"),顯示名為"example"的本地圖像
示例2:Image("[https://xxx.jpg")姚炕,顯示遠程圖像摊欠,其中"https://xxx.jpg"是圖像的URL

AsyncImage:用于異步加載圖像的視圖

示例1:AsyncImage(url: URL(string: "[https://example.com/image.png](https://example.com/image.png)"), placeholder: { Text("Loading ...") }, image: { Image(uiImage: $0).resizable() }), 創(chuàng)建一個異步圖像視圖,用于加載指定URL的圖像柱宦。在圖像加載完成之前凄硼,將顯示一個“Loading ...”文本視圖。
示例2:AsyncImage(url: URL(string: "[https://example.com/image.png](https://example.com/image.png)"), transaction: Transaction(animation: .spring())) { phase in switch phase { case .empty: ProgressView() case .success(let image): image.resizable() case .failure(_): Image(systemName: "exclamationmark.icloud.fill") } }, 創(chuàng)建一個異步圖像視圖捷沸,用于加載指定URL的圖像摊沉。這個例子中的視圖是可變的,并在加載過程中顯示進度視圖痒给。如果加載失敗说墨,將顯示一個帶有感嘆號的圖標骏全。

Button組件:用于創(chuàng)建交互式按鈕

示例1:Button("Click me!") { print("Button clicked!") },創(chuàng)建一個按鈕尼斧,當按鈕被點擊時姜贡,輸出"Button clicked!"
示例2:Button(action: startGame) { Text("Start game") },創(chuàng)建一個按鈕棺棵,當按鈕被點擊時調(diào)用startGame函數(shù)楼咳,并顯示"Start game"文本

EditButton:一個按鈕,用于觸發(fā)編輯模式烛恤,可以在此模式下編輯列表和其他視圖

示例1:NavigationView { List { ForEach(items) { item in Text(item) }.onDelete(perform: delete) } .navigationBarTitle("Items") .navigationBarItems(trailing: EditButton()) }, 使用EditButton將列表視圖轉(zhuǎn)換為可編輯模式母怜,并將其放置在導(dǎo)航欄的右側(cè)。
示例2:VStack { Text("Hello, world!") Spacer() EditButton() }, 在一個垂直的StackView中使用EditButton缚柏,以便用戶可以通過點擊該按鈕將其放置在可編輯模式下苹熏。

TextField組件:用于接受用戶輸入的文本

示例1:TextField("Enter your name", text: $name)硫朦,創(chuàng)建一個文本框非凌,讓用戶輸入他們的名字抵碟,并將輸入的文本存儲在名為name的變量中
示例2:TextField("Enter your password", text: $password).textFieldStyle(RoundedBorderTextFieldStyle())晓铆,創(chuàng)建一個帶有圓角邊框的文本框瀑梗,讓用戶輸入他們的密碼广恢,并將輸入的文本存儲在名為password的變量中

Toggle組件:用于創(chuàng)建開關(guān)按鈕

示例1:Toggle("Toggle me", isOn: $toggleValue)实胸,創(chuàng)建一個帶有標簽的切換按鈕叙甸,并將其狀態(tài)存儲在名為toggleValue的布爾變量中
示例2:Toggle(isOn: $isDarkMode) { Text("Dark mode") }史翘,創(chuàng)建一個切換按鈕铐然,當按鈕被打開時,應(yīng)用程序進入暗模式恶座,并顯示"Dark mode"文本

Slider組件:用于創(chuàng)建滑塊

示例1:Slider(value: $sliderValue, in: 0...10)搀暑,創(chuàng)建一個滑塊,將其值存儲在名為sliderValue的變量中跨琳,并將其范圍設(shè)置為0到10
示例2:Slider(value: $fontSize, in: 12...24, step: 2) { Text("Font size: (fontSize)") }自点,創(chuàng)建一個滑塊,當滑塊的值改變時脉让,將字體大小存儲在名為fontSize的變量中桂敛,并顯示"Font size: xx"文本,其中xx是字體大小的值

NavigationView組件:用于創(chuàng)建具有導(dǎo)航功能的視圖

示例1:NavigationView { Text("Hello, World!") }溅潜,創(chuàng)建一個帶有"Hello, World!"文本的視圖术唬,并添加導(dǎo)航功能
示例2:NavigationView { List(items) { Text($(item) } },創(chuàng)建一個帶有列表視圖的導(dǎo)航視圖滚澜,其中items是一個包含多個項目的數(shù)組粗仓,每個項目都會顯示為列表中的一個行文本。

VStack和HStack組件:用于垂直和水平布局子視圖

示例1:VStack(alignment: .leading, spacing: 10) { Text("Title") Text("Subtitle") },創(chuàng)建一個垂直堆棧借浊,其中包含標題和副標題文本塘淑,標題文本位于上方,副標題文本位于下方蚂斤,兩個文本之間的間距為10個點存捺。
示例2:HStack { Image("icon") Text("Label") },創(chuàng)建一個水平堆棧曙蒸,其中包含圖像和標簽文本捌治,圖像位于標簽文本的左側(cè)。

List組件:用于創(chuàng)建列表視圖

示例1:List(items) { Text($0) }纽窟,創(chuàng)建一個簡單的列表視圖肖油,其中items是一個包含字符串的數(shù)組,每個字符串都會顯示為一個列表行文本师倔。
示例2:List(tasks) { task in TaskView(task: task) },創(chuàng)建一個包含多個任務(wù)視圖的列表視圖周蹭,其中tasks是一個包含多個任務(wù)對象的數(shù)組趋艘,TaskView是一個自定義的視圖組件,用于顯示單個任務(wù)凶朗。

Form組件:用于創(chuàng)建表單視圖

示例1:Form { TextField("Name", text: $name) TextField("Email", text: $email) }瓷胧,創(chuàng)建一個包含姓名和電子郵件文本字段的簡單表單視圖。
示例2:Form { Toggle("Dark mode", isOn: $isDarkMode) Section(header: Text("Settings")) { TextField("Username", text: $username) TextField("Password", text: $password) } }棚愤,創(chuàng)建一個包含切換按鈕和用戶名/密碼輸入的表單視圖搓萧,切換按鈕用于切換暗模式,用戶名和密碼輸入包含在一個包含標題的部分中宛畦。

Alert組件:用于創(chuàng)建警報框視圖

示例1:Button("Show Alert") { showAlert.toggle() } .alert(isPresented: $showAlert) { Alert(title: Text("Alert"), message: Text("This is an alert"), dismissButton: .default(Text("OK"))) }瘸洛,創(chuàng)建一個按鈕,單擊后顯示一個帶有標題次和,消息和一個“OK”按鈕的警報框視圖反肋。
示例2:Alert(title: Text("Delete"), message: Text("Are you sure you want to delete this item?"), primaryButton: .destructive(Text("Delete")) { deleteItem() }, secondaryButton: .cancel()),創(chuàng)建一個帶有警告消息踏施,一個紅色的“刪除”按鈕和一個“取消”按鈕的警報框視圖石蔗,用于在用戶確認刪除操作之前進行確認。

ActionSheet組件:用于創(chuàng)建操作表視圖

示例1:Button("Show Action Sheet") { showActionSheet.toggle() } .actionSheet(isPresented: $showActionSheet) { ActionSheet(title: Text("Actions"), message: Text("Choose an action"), buttons: [.default(Text("Action 1")), .default(Text("Action 2")), .cancel()]) }畅形,創(chuàng)建一個按鈕养距,單擊后顯示一個操作表視圖,其中包含兩個默認操作和一個“取消”按鈕日熬。
示例2:ActionSheet(title: Text("Share"), message: Text("Choose a sharing option"), buttons: [.default(Text("Share on Facebook")) { shareOnFacebook() }, .default(Text("Share on Twitter")) { shareOnTwitter() }, .default(Text("Share via Email")) { shareViaEmail() }, .cancel()])棍厌,創(chuàng)建一個帶有標題和消息的操作表視圖,其中包含三個不同的共享選項按鈕和一個“取消”按鈕。每個按鈕上的操作會調(diào)用不同的分享函數(shù)定铜。

TabView組件:用于創(chuàng)建帶有多個標簽頁的視圖

示例1:TabView { Text("Tab 1") .tabItem { Image(systemName: "star") Text("Tab 1") } Text("Tab 2") .tabItem { Image(systemName: "heart") Text("Tab 2") } }阳液,創(chuàng)建一個帶有兩個標簽頁的視圖,每個標簽頁都包含一個文本視圖和一個圖標揣炕,用于切換不同的視圖內(nèi)容帘皿。
示例2:TabView(selection: $selectedTab) { ForEach(tabs) { tab in TabContentView(tab: tab) .tabItem { Image(tab.icon) Text(tab.title) } } },創(chuàng)建一個具有多個標簽頁的視圖畸陡,其中每個標簽頁都具有自定義的圖標和標題鹰溜,并在選定標簽頁時顯示對應(yīng)的內(nèi)容視圖。

NavigationLink組件:用于在導(dǎo)航視圖中創(chuàng)建可點擊的鏈接

示例1:NavigationLink(destination: DetailView()) { Text("Go to Detail View") }丁恭,創(chuàng)建一個可點擊的鏈接曹动,單擊后將導(dǎo)航到名為“DetailView”的目標視圖。
示例2:ForEach(items) { item in NavigationLink(destination: ItemDetailView(item: item)) { Text(item.name) } }牲览,創(chuàng)建一個帶有多個鏈接的列表視圖墓陈,每個鏈接都導(dǎo)航到一個名為“ItemDetailView”的目標視圖,該視圖顯示有關(guān)該項的詳細信息第献。

Picker:一個視圖贡必,用于在一個列表中顯示一組選項,并允許用戶選擇其中一個選項庸毫。

示例1:Picker("Fruit", selection: $selectedFruit) { ForEach(fruits, id: .self) { Text($0) } }仔拟,創(chuàng)建一個Picker,用于在一個水果列表中選擇一個選項飒赃,并將選擇的選項綁定到名稱為“selectedFruit”的綁定變量中利花。 示例2:Picker(selection: $selectedColor, label: Text("Color")) { ForEach(colors, id: .self) { Text($0) } }.pickerStyle(.segmented),創(chuàng)建一個Picker载佳,用于在一組顏色中選擇一個選項炒事,并將選擇的選項綁定到名稱為“selectedColor”的綁定變量中。使用.segmented樣式使Picker的外觀更改為分段控件樣式蔫慧。

DatePicker組件:用于創(chuàng)建日期選擇器

示例1:DatePicker("Select a date", selection: $selectedDate, displayedComponents: .date)羡洛,創(chuàng)建一個日期選擇器,用戶可以選擇日期藕漱,該日期將存儲在名為“selectedDate”的綁定變量中欲侮。
示例2:DatePicker("Select a time", selection: $selectedTime, displayedComponents: .hourAndMinute),創(chuàng)建一個時間選擇器肋联,用戶可以選擇時間威蕉,該時間將存儲在名為“selectedTime”的綁定變量中。

Stepper組件:用于創(chuàng)建步進器視圖

示例1:Stepper("Value: (value)", value: $value)橄仍,創(chuàng)建一個步進器視圖韧涨,用戶可以單擊“+”或“-”按鈕來增加或減少值牍戚,該值將存儲在名為“value”的綁定變量中。
示例2:Stepper(onIncrement: { incrementValue() }, onDecrement: { decrementValue() }) { Text("Value: (value)") }虑粥,創(chuàng)建一個自定義的步進器視圖如孝,當用戶單擊“+”或“-”按鈕時,分別調(diào)用兩個不同的函數(shù)來增加或減少值娩贷,并在視圖中顯示當前值第晰。

ProgressView組件:用于顯示進度條或輪廓視圖

示例1:ProgressView(),創(chuàng)建一個默認樣式的進度條視圖彬祖。
示例2:ProgressView("Loading...")茁瘦,創(chuàng)建一個帶有標簽“Loading...”的進度條視圖。

ScrollView組件:用于創(chuàng)建可滾動的視圖

示例1:ScrollView { Text("Scrollable content") }

ColorPicker組件:用于創(chuàng)建顏色選擇器

示例1:ColorPicker("Select a color", selection: $selectedColor)储笑,創(chuàng)建一個顏色選擇器甜熔,當用戶選擇顏色時,將觸發(fā)綁定變量“selectedColor”的值更改突倍,并在選擇器旁邊顯示標簽“Select a color”腔稀。
示例2:ColorPicker(selection: $selectedColor, supportsOpacity: true),創(chuàng)建一個顏色選擇器羽历,支持選擇不透明度焊虏,并且不顯示標簽。

VideoPlayer組件:用于在應(yīng)用程序中播放視頻

示例1:VideoPlayer(player: player) 窄陡,創(chuàng)建一個視頻播放器炕淮,其中“player”是一個包含要播放的視頻的AVPlayer實例拆火。
示例2:VideoPlayer(player: player, controls: .custom(actions: { CustomControls() }))跳夭,創(chuàng)建一個視頻播放器,自定義播放器控件们镜。

MapView組件:用于在應(yīng)用程序中顯示地圖

示例1:MapView(coordinate: CLLocationCoordinate2D(latitude: 37.3318, longitude: -122.005))币叹,創(chuàng)建一個地圖視圖,其中心點坐標為經(jīng)度37.3318模狭,緯度-122.005的位置颈抚。
示例2:MapView(coordinateRegion: $region),創(chuàng)建一個地圖視圖嚼鹉,其中心點坐標和縮放比例由綁定變量“region”控制贩汉。

Gauge:用于顯示某個值相對于給定范圍的百分比。它可以是一個圓形或者一個半圓形锚赤。

示例1:Gauge(value: progress, in: 0...100)匹舞。創(chuàng)建一個圓形的Gauge,用于顯示進度百分比线脚,progress是0到100之間的值赐稽,in參數(shù)表示Gauge的范圍叫榕。
示例2:Gauge(value: progress, in: 0...100, label: { Text("(Int(progress))%") })。創(chuàng)建一個圓形的Gauge姊舵,用于顯示進度百分比晰绎,progress是0到100之間的值,in參數(shù)表示Gauge的范圍括丁。同時荞下,定義一個標簽,用于在Gauge中心顯示進度百分比躏将。

Menu組件:用于創(chuàng)建菜單

示例1:Menu(content: { Text("Menu item 1") Text("Menu item 2") }, label: { Text("Menu") })锄弱,創(chuàng)建一個菜單,包含兩個菜單項“Menu item 1”和“Menu item 2”祸憋,并在標簽中顯示文本“Menu”会宪。
示例2:Menu(content: { Button("Delete") { delete() } }, trigger: .init(label: { Text("More") })),創(chuàng)建一個菜單蚯窥,包含一個按鈕“Delete”掸鹅,單擊后調(diào)用“delete”函數(shù),并在標簽中顯示文本“More”拦赠。

Link組件:用于創(chuàng)建鏈接

示例1:Link("Open SwiftUI documentation", destination: URL(string: "[https://developer.apple.com/documentation/swiftui](https://developer.apple.com/documentation/swiftui)")!) 巍沙,創(chuàng)建一個鏈接,顯示文本“Open SwiftUI documentation”荷鼠,單擊后打開目標URL地址句携。
示例2:Link(destination: URL(string: "[https://developer.apple.com/documentation/swiftui](https://developer.apple.com/documentation/swiftui)")!) { Text("Learn more about SwiftUI") },創(chuàng)建一個鏈接允乐,顯示文本“Learn more about SwiftUI”矮嫉,單擊后打開目標URL地址。

ShareLink:一個視圖牍疏,用于共享鏈接或其他內(nèi)容

示例1:Button(action: shareLink) { Text("Share Link") }, 在一個按鈕中使用ShareLink來觸發(fā)共享視圖蠢笋,并使用shareLink方法來定義共享內(nèi)容。
示例2:ShareLink(destination: URL(string: "[https://www.example.com](https://www.example.com/)")!, label: { Text("Share Link") }), 使用ShareLink在視圖中顯示一個可共享的鏈接鳞陨,并將該鏈接標記為標簽昨寞。

WebView組件:用于顯示W(wǎng)eb內(nèi)容

示例1:WebView(url: URL(string: "[https://www.apple.com")!),創(chuàng)建一個WebView組件厦滤,加載指定的URL援岩。](https://www.apple.xn--com%22%29%21%29%2Cwebview%2Curl-qr76b28ac6nzm2a6zdy61h77xamo5auv0ms1rcb2uh./)
示例2:WebView(htmlString: "<h1>Hello, World!</h1>"),創(chuàng)建一個WebView組件掏导,顯示指定的HTML字符串享怀。

Spacer組件:用于占用可用空間

示例1:HStack { Text("Left") Spacer() Text("Right") },創(chuàng)建一個水平棧視圖碘菜,左邊是文本“Left”凹蜈,右邊是文本“Right”限寞,使用Spacer()占用中間可用的空間。
示例2:VStack { Text("Top") Spacer() Text("Bottom") }仰坦,創(chuàng)建一個垂直棧視圖履植,上面是文本“Top”,下面是文本“Bottom”悄晃,使用Spacer()占用中間可用的空間玫霎。

若還有沒想到的組件,請在評論中告訴我妈橄,我繼續(xù)完善

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庶近,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子眷蚓,更是在濱河造成了極大的恐慌鼻种,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沙热,死亡現(xiàn)場離奇詭異叉钥,居然都是意外死亡,警方通過查閱死者的電腦和手機篙贸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門投队,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人爵川,你說我怎么就攤上這事敷鸦。” “怎么了寝贡?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵扒披,是天一觀的道長。 經(jīng)常有香客問我兔甘,道長谎碍,這世上最難降的妖魔是什么鳞滨? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任洞焙,我火速辦了婚禮,結(jié)果婚禮上拯啦,老公的妹妹穿的比我還像新娘澡匪。我一直安慰自己,他們只是感情好褒链,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布唁情。 她就那樣靜靜地躺著,像睡著了一般甫匹。 火紅的嫁衣襯著肌膚如雪甸鸟。 梳的紋絲不亂的頭發(fā)上惦费,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機與錄音抢韭,去河邊找鬼薪贫。 笑死,一個胖子當著我的面吹牛刻恭,可吹牛的內(nèi)容都是我干的瞧省。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼鳍贾,長吁一口氣:“原來是場噩夢啊……” “哼鞍匾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起骑科,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤橡淑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咆爽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梳码,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年伍掀,在試婚紗的時候發(fā)現(xiàn)自己被綠了掰茶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜜笤,死狀恐怖濒蒋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情把兔,我是刑警寧澤沪伙,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站县好,受9級特大地震影響围橡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缕贡,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一翁授、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晾咪,春花似錦收擦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至昼蛀,卻和暖如春宴猾,著一層夾襖步出監(jiān)牢的瞬間圆存,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工仇哆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辽剧,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓税产,卻偏偏與公主長得像怕轿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辟拷,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容