是否可以编写返回文本视图 HStack 的 func、方法、结构、扩展、类?
Posted
技术标签:
【中文标题】是否可以编写返回文本视图 HStack 的 func、方法、结构、扩展、类?【英文标题】:Is it possible to write a func, method, struct, extension, class that returns a HStack of Text Views? 【发布时间】: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,而不是文本视图。
感谢您的帮助。
【问题讨论】:
【参考方案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..以上是关于是否可以编写返回文本视图 HStack 的 func、方法、结构、扩展、类?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:VStack 中 ForEach 中的 HStack 使多行文本重叠
如何在 SwiftUI 中嵌入 ForEach 的 HStack 中设置相对宽度?