#ios #swiftui
#iOS #свифтуи #swiftui
Вопрос:
Я хотел бы иметь возможность сказать, что мне нужен набор текстовых представлений so mamy, и чтобы они отображались в моем основном виде содержимого. Самое близкое, что я получил, это следующее: у меня есть файл под названием TextView.swift со следующим кодом:
import SwiftUI
struct TextView: UIViewRepresentable {
@Binding var text: String
@Binding var textStyle: UIFont.TextStyle
func makeUIView(context: Context) -> UITextView {
let textView = UITextView()
textView.font = UIFont.preferredFont(forTextStyle: textStyle)
textView.autocapitalizationType = .sentences
textView.isSelectable = true
textView.isUserInteractionEnabled = true
return textView
}
func updateUIView(_ uiView: UITextView, context: Context) {
uiView.text = text
uiView.font = UIFont.preferredFont(forTextStyle: textStyle)
}
}
// In content view:
struct ContentView: View {
@State private var message = "this is my message in a bottle"
@State private var textStyle = UIFont.TextStyle.body
var body: some View {
TextView(text: $message, textStyle: $textStyle)
.padding(.horizontal)
}
}
Вместо текстового представления я хотел бы иметь HStack с 15 текстовыми представлениями внутри него.
Спасибо за вашу помощь.
Ответ №1:
вы можете просто написать функцию для возврата желаемого представления.
struct ContentView: View {
let numberOfTextViews = 15
func getTextViews() -> some View {
return HStack {
ForEach(0..<self.numberOfTextViews, id: .self) {
index in
Text("this is item (index)")
.background(index % 2 == 0 ? Color.Red : Color.Blue)
}
}
}
var body: some View {
self.getTextViews()
}
}
Комментарии:
1. Спасибо Мохаммаду Рахчамани, это отлично работает. Есть только небольшая опечатка ForEach(0 .. У меня есть еще один вопрос: как бы вы изменили цвет фона некоторых текстовых представлений?
2. Спасибо Мохаммаду Рахчамани, это хорошо для того, чтобы сделать 1 красным, а следующий синим. Вот еще одна проблема: у меня есть 255 плиток, т. е. сетка 15×15, и мне нужно иметь возможность определять цвет плиток в заданных позициях. Я объявил эти переменные: пусть purple = Color.purple пусть pink = Color. розовый пусть зеленый = цвет.зеленый пусть синий = Цвет. синий пусть greenPos = [3,11,36,38,45,52] пусть bluePos = [20,24,76,80,64,88,136,140,144,148,200,204] пусть redPos = [0,7,14,105,119,210,217,224] пусть purplePos = [ 16,28,32,42,48,56,64,70,154,160] Возможно ли это или я сплю?
3. вы можете добавить функцию для возврата желаемого фона на основе ваших условий. вам следует задать другой вопрос, и я буду более чем счастлив помочь вам с кодом.