【问题标题】:Is it possible to write a func, method, struct, extension, class that returns a HStack of Text Views?是否可以编写返回文本视图 HStack 的 func、方法、结构、扩展、类?
【发布时间】:2020-08-24 00:06:43
【问题描述】:

我想说我需要一个包含大量文本视图的 HStack,并让它们出现在我的内容视图正文中。 我得到的最接近的是: 我有一个名为 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)
    }    
}

我想要一个包含 15 个文本视图的 HStack,而不是文本视图。

感谢您的帮助。

【问题讨论】:

    标签: ios swiftui


    【解决方案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()
        }    
    }
    

    【讨论】:

    • 感谢 Mohammad Rahchamani,它工作得很好。只是一个小错字 ForEach(0..
    • 感谢 Mohammad Rahchamani,这有助于制作 1 个红色和下一个蓝色。这是另一个挑战:我有 255 个图块,即一个 15x15 的网格,我需要能够确定给定位置的图块颜色。我声明了这些变量: let Purple = Color.purple let pink = Color.pink let green = Color.green let blue = Color.blue let greenPos = [3,11,36,38,45,52] let bluePos = [20 ,24,76,80,64,88,136,140,​​144,148,200,204] let redPos = [0,7,14,105,119,210,217,224] let PurplePos = [16,28,32,42,48,56,64,70,154,160] 有可能还是我在做梦?
    • 您可以添加一个函数以根据您的条件返回所需的背景。你应该发布另一个问题,我很乐意帮助你编写代码。
    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2015-11-15
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多