- Published on
SwiftUI-da TextEditor
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Hammaga xush kelibsiz! Mening ismim Nick, bu β Swiftful Thinking kanali.
Bu videoda TextEditor bilan ishlashni o'rganamiz. Oldingi videoda TextField ko'rdik β u bir qatorli matn kiritish uchun. Agar foydalanuvchi bir necha qator yoza olishi kerak bo'lsa β masalan, bio yozish uchun β TextEditor ishlatiladi.
TextField va TextEditor β qaysi birini tanlash kerak?
| Holat | Ishlatish kerak |
|---|---|
| Bir qatorli kiritish (foydalanuvchi nomi, email) | TextField |
| Ko'p qatorli kiritish (bio, izoh, xabar) | TextEditor |
Iloji bo'lsa
TextFieldishlating β u sozlash uchun qulayroq.TextEditor-ni faqat ko'p qator zarur bo'lganida qo'llang.
Yangi fayl yaratish
Navigatorda o'ng tugma bosib yangi SwiftUI fayli yarating. Uni TextEditorBootcamp deb nomlang va Create tugmasini bosing. Canvas-da Resume bosing.
Boshlang'ich ko'rinish
struct TextEditorBootcamp: View {
@State var textEditorText: String = "Bu boshlang'ich matn"
@State var savedText: String = ""
var body: some View {
NavigationView {
VStack {
TextEditor(text: $textEditorText)
Button(action: {
savedText = textEditorText
}, label: {
Text("SAQLASH")
.font(.headline)
.foregroundColor(.white)
.padding()
.frame(maxWidth: .infinity)
.background(Color.blue)
.cornerRadius(10)
})
Text(savedText)
Spacer()
}
.navigationTitle("TextEditor")
}
}
}
TextEditor TextField-dan farqli β u ko'p qatorli kiritish maydonini yaratadi. Foydalanuvchi Enter bosib yangi qatorga o'tishi va yuqori-pastga aylantirib o'qishi mumkin.
Balandlikni cheklash
TextEditor odatda mavjud bo'sh joyni to'liq egallaydi. Balandligini cheklash uchun .frame() qo'shamiz:
TextEditor(text: $textEditorText)
.frame(height: 250)
Elementlar joylashuvini tushunish
Agar element qayerda boshlanib-tugashini bilmasangiz, vaqtinchalik .background() qo'shing:
VStack {
// ...
}
.padding()
.background(Color.green) // faqat debug uchun
Joylashuv aniqlanganidan so'ng bu qatorni o'chirib tashlang.
Saqlash funksiyasi
Tugma bosilganda TextEditor-dagi matnni boshqa o'zgaruvchiga saqlaymiz:
struct TextEditorBootcamp: View {
@State var textEditorText: String = "Bu boshlang'ich matn"
@State var savedText: String = ""
var body: some View {
NavigationView {
VStack(spacing: 12) {
TextEditor(text: $textEditorText)
.frame(height: 250)
Button(action: {
savedText = textEditorText
}, label: {
Text("SAQLASH")
.font(.headline)
.foregroundColor(.white)
.padding()
.frame(maxWidth: .infinity)
.background(Color.blue)
.cornerRadius(10)
})
Text(savedText)
Spacer()
}
.padding()
.navigationTitle("TextEditor")
}
}
}
Haqiqiy ilovada "Saqlash" tugmasi bosilganda serverga yoki ma'lumotlar bazasiga yozish kabi amallar bajariladi. Bu yerda savedText o'zgaruvchisi o'sha operatsiyani simulyatsiya qilmoqda.
Ranglarni sozlash
Matn rangi
TextEditor(text: $textEditorText)
.frame(height: 250)
.foregroundColor(.red)
Fon rangi β .colorMultiply()
TextEditor-ga to'g'ridan-to'g'ri .background() qo'shish ishlamaydi. Buning o'rniga .colorMultiply() ishlatiladi:
TextEditor(text: $textEditorText)
.frame(height: 250)
.colorMultiply(Color(white: 0.9)) // och kulrang
.cornerRadius(10)
Eslatma:
.colorMultiply()matn rangi qora bo'lganda to'g'ri ishlaydi. Matn rangini o'zgartirsangiz, natija kutilganidek bo'lmasligi mumkin.
To'liq kod
struct TextEditorBootcamp: View {
@State var textEditorText: String = "Bu boshlang'ich matn"
@State var savedText: String = ""
var body: some View {
NavigationView {
VStack(spacing: 12) {
TextEditor(text: $textEditorText)
.frame(height: 250)
.colorMultiply(Color(white: 0.9))
.cornerRadius(10)
Button(action: {
savedText = textEditorText
}, label: {
Text("SAQLASH")
.font(.headline)
.foregroundColor(.white)
.padding()
.frame(maxWidth: .infinity)
.background(Color.blue)
.cornerRadius(10)
})
Text(savedText)
Spacer()
}
.padding()
.navigationTitle("TextEditor")
}
}
}
Xulosa
Bu videoda o'rgandik:
TextEditorβ ko'p qatorli matn kiritish komponentiTextFieldβ bir qatorli,TextEditorβ ko'p qatorli.frame(height:)βTextEditorbalandligini cheklash- Saqlash pattern β
@Stateo'zgaruvchisi + tugma bosilganda qiymat uzatish .colorMultiply()βTextEditorfon rangini o'zgartirish usuli- Qoida: iloji bo'lsa
TextFieldishlating, faqat ko'p qator kerak bo'lsaTextEditorishlating
Rahmat tomosha qilganingiz uchun! Men β Nick, bu Swiftful Thinking. Keyingi videoda ko'rishamiz!