我是一個swiftui的初學者。我開始做一個圣經應用程式作為入門專案。我創建了一個設定,在該設定中,我想通過使用選取器來改變我的字體大小。我已經在網上搜索了4天的解決方案,但我不知道我應該怎么做。
問題1:我不知道如何根據選擇器的選擇來更新字體大小。有人說要使用.onChange,但我不知道如何做。所以,我試著使用switch case方法,但還是不知道如何更新文字。另外,我試著用自定義修改器來替換.font(.footnote)之類的東西。但是,我仍然不知道如何更新它,EnvironmentalObject也沒有任何幫助。請指導我如何解決這個問題。
問題2:每次我播放畫布時,選擇器的選擇總是從默認的索引開始,這很合理。但在實際應用中,在用戶選擇了不同的索引后,它是否總是從默認索引開始,或者我應該如何做才能保持預選的索引。
下面是我的代碼:
import SwiftUI
struct Setting。View {
private var fontSizeIndex = 3
private var fontIndex = 1
var body: some View {
NavigationView {
ScrollView {
//文本設定 {
Form {
//字體大小選取器 {
Section(header: Text("Text Settings")) {
Picker(selection: $fontSizeIndex, label: Text("Font Size")。
內容。{
Text("Extra Small") .tag(1)
Text("Small").tag( 2)
Text("Medium").tag(3)
Text("Large").tag(4)
Text("Extra Large").tag(5)
})
//font Picker
//我計劃制作自定義字體,如果我知道如何更新我的。
//選擇。
Picker(selection: $fontIndex, label: Text("Font"), content: {
Text("Font1") .tag(1)
Text("Font2").tag( 2)
Text("Font3").tag(3)
Text("Font4").tag(4)
Text("Font5").tag(5)
Text("Font6").tag(6)
Text("Font7").tag(7)
})
}
}
.frame(高度:280)
}
}
}
這是我的Text或Scripture(),它在另一個視圖中
。import SwiftUI
struct Scripture。View {
//@EnvironmentObject var fsc: FontSizeChanging
var body: some View {
ScrollView {
Text("Hih in Zeisu Khazih khang ciamtehna ahi hi. 亞瑪在大衛里,大衛在亞伯拉罕里,亞伯拉罕在亞希里。2 Abraham tapa Isaac, Isaac tapa Jacob, Jacob tapa Judah le a sanggam pasal teng ahi hi. 3 Judah in a zi Tamar tawh a neih a tapa Perez le Zerah, Perez tapa Hezron, Hezron tapa Ram, 4 Ram tapa Amminadab, Amminadab tapa Nahshon, Nahshon tapa Salmon, 5 Salmon in a zi Rahab tawh a neih a tapa Boaz, Boaz in a zi Ruth tawh a neih a tapa Obed, Obed tapa Jesse, 6 Jesse tapa Kumpipa David ahi Hi. David in Uriah zi tawh a neih a tapa Solomon, 7 Solomon tapa Rehoboam, Rehoboam tapa Abijah, Abijah tapa Asa, 8 Asa tapa Jehoshaphat, Jehoshaphat tapa Joram, 9烏西雅接約坦,約坦接亞哈斯,亞哈斯接希西家,10希西家接瑪拿西,瑪拿西接阿蒙,阿蒙接約西亞。11 耶哥尼雅在巴比倫,在巴比倫,在約西亞,在約西亞,在約西亞。12 巴比倫在耶哥尼雅的地盤上有一個叫舍利子的,舍利子叫所羅巴伯,13 所羅巴伯叫阿比玉,阿比玉叫以利亞敬,以利亞敬叫亞速,14 亞速叫撒督。Zadok tapa Achim, Achim tapa Eliud, 15 Eliud tapa Eleazar, Eleazar tapa Matthan, Matthan tapa Jacob, 16 Jacob tapa Joseph hi a, Joseph in Khazih a kici Zeisu a hong suahna Mary pasal ahi hi. 17 Tua hi a, Abraham khang panin David khang ciang a vekin khang sawm le khang li, David khang panin Babylon gama saltang dinga a kimat hun ciang khang sawm le khang li, Babylon gama saltan hun pan Khazih khang ciang khang sawm le khang li mah ahi hi. 18 宰相卡齊赫是一個有經驗的人。馬利亞和約瑟在一起的時候,他就把自己的名字寫在紙上。19 A lawmpa Joseph in mi lungsim hoih hi a, a lawmnu Mary min daisak nuamlo ahih manin maksim dingin a ngaihsun hi." /span>)
//.font(fsc.fontSize)。
.foregroundColor(.primary)
//.font(Setting(fontSizeIndex: self.$fontSizeIndex)) .
.multilineTextAlignment(.leading) //在此測驗.center。
.lineSpacing(5)
.padding()
}
}
}
struct Scripture_Previews: PreviewProvider {
static var previews: some View {
Scripture()
}
}
uj5u.com熱心網友回復:
下面的內容應該可以作業。
我添加了齒輪圖示。
我在螢屏的右上方添加了一個齒輪圖示,使設定和經文之間的導航更容易。這將使你能夠輕松地改變字體大小。
我的方法是使用@Application的方式,即使用@Application的方式。
我的方法使用@AppStorage。這可以保存資料,因此當用戶啟動應用程式時,他們的字體大小選擇將保持不變。您可以在您需要編輯字體大小的任何地方使用這一方法。
要改變字體大小,只需在您的選擇器中更新.tag()內的值。我選了一組隨機的數字。這就是你要輸入所需字體大小的地方。
import SwiftUI
struct Setting: View {
@State private var fontSizeIndex = 3
@State private var fontIndex = 1
@AppStorage("fontSize") var fontSize = 50
var body: some View {
NavigationView {
ScrollView {
//文本設定 {
Form {
//字體大小選取器 {
Section(header: Text("Text Settings")) {
Picker(selection: $fontSize, label: Text("Font Size")。
內容。{
Text("Extra Small") .tag(10)
Text("Small").tag(15)
Text("Medium").tag(20)
Text("Large").tag(25)
Text("Extra Large").tag(50)
})
//font Picker
//我計劃制作自定義字體,如果我知道如何更新我的。
//選擇。
Picker(selection: $fontIndex, label: Text("Font"), content: {
Text("Font1") .tag(1)
Text("Font2").tag( 2)
Text("Font3").tag(3)
Text("Font4").tag(4)
Text("Font5").tag(5)
Text("Font6").tag(6)
Text("Font7").tag(7)
})
}
}
.frame(高度:280)
}
}
}
}
struct Scripture: 視圖 {
//@EnvironmentObject var fsc: FontSizeChanging
@AppStorage("fontSize") var fontSize = 50
var body: some View {
NavigationView {
ScrollView {
Text("Hih in Zeisu Khazih khang ciamtehna ahi hi. 亞瑪在大衛里,大衛在亞伯拉罕里,亞伯拉罕在亞希里。2 Abraham tapa Isaac, Isaac tapa Jacob, Jacob tapa Judah le a sanggam pasal teng ahi hi. 3 Judah in a zi Tamar tawh a neih a tapa Perez le Zerah, Perez tapa Hezron, Hezron tapa Ram, 4 Ram tapa Amminadab, Amminadab tapa Nahshon, Nahshon tapa Salmon, 5 Salmon in a zi Rahab tawh a neih a tapa Boaz, Boaz in a zi Ruth tawh a neih a tapa Obed, Obed tapa Jesse, 6 Jesse tapa Kumpipa David ahi Hi. David in Uriah zi tawh a neih a tapa Solomon, 7 Solomon tapa Rehoboam, Rehoboam tapa Abijah, Abijah tapa Asa, 8 Asa tapa Jehoshaphat, Jehoshaphat tapa Joram, 9烏西雅接約坦,約坦接亞哈斯,亞哈斯接希西家,10希西家接瑪拿西,瑪拿西接阿蒙,阿蒙接約西亞。11 耶哥尼雅在巴比倫,在巴比倫,在約西亞,在約西亞,在約西亞。12 巴比倫在耶哥尼雅的地盤上有一個叫舍利子的,舍利子叫所羅巴伯,13 所羅巴伯叫阿比玉,阿比玉叫以利亞敬,以利亞敬叫亞速,14 亞速叫撒督。Zadok tapa Achim, Achim tapa Eliud, 15 Eliud tapa Eleazar, Eleazar tapa Matthan, Matthan tapa Jacob, 16 Jacob tapa Joseph hi a, Joseph in Khazih a kici Zeisu a hong suahna Mary pasal ahi hi. 17 Tua hi a, Abraham khang panin David khang ciang a vekin khang sawm le khang li, David khang panin Babylon gama saltang dinga a kimat hun ciang khang sawm le khang li, Babylon gama saltan hun pan Khazih khang ciang khang sawm le khang li mah ahi hi. 18 宰相卡齊赫是一個有經驗的人。馬利亞和約瑟在一起的時候,他就把自己的名字寫在紙上。19 A lawmpa Joseph in mi lungsim hoih hi a, a lawmnu Mary min daisak nuamlo ahih manin maksim dingin a ngaihsun hi." /span>)
//.font(fsc.fontSize)。
.font(.system(size: CGFloat(fontSize)))
.foregroundColor(.primary)
//.font(Setting(fontSizeIndex: self.$fontSizeIndex))。
.multilineTextAlignment(.leading) //在此測驗.center。
.lineSpacing(5)
.padding()
}
.工具條 {
ToolbarItem(placement: .navigationBarTrailing) {
HStack {
NavigationLink(目的地。Setting(), label: {
Image(systemName: " gearshape")
})
}
}
}
}
}
}
struct Scripture_Previews: PreviewProvider {
static var previews: some View {
Scripture()
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/307585.html
標籤:
