swiftui - 点击文本以显示所有内容
问题描述
我想在新闻提要上创建一个查看更多...功能,就像 Facebook 一样。SwiftUI 列表有行,一行由(HStack(用户名,发布时间)的 VStack、文本(默认仅显示 2 行并且可消耗以显示所有内容)和最后一个自定义大小的图像组成。我能够实现切换并将 lineLimit 设置为 nil 以反映这一点,但问题是顶部 HStack 在行的高度之外并隐藏在前一行的后面。我使用绑定变量来触发视图刷新但结果如何.
解决方案
这是一个工作示例,说明如何使用表示行的 aScrollView
和一个简单的来实现此目的:struct
import SwiftUI
struct FeedList: View {
var body: some View {
ScrollView {
ForEach(1...50, id: \.self) { item in
VStack {
FeedRow()
Divider()
}
}
}
}
}
struct FeedRow: View {
@State var value: Bool = false
var body: some View {
VStack {
HStack {
Text("Username")
Text("17:17h")
}
.padding(10)
Text("I would like to create a See more... feature on the news feed, pretty much like Facebook. The SwiftUI list has rows, a row is composed of a VStack of (HStack (username, post time), Text (showing only 2 lines by default and expendable to show all of it is toggled) and finally an image with custom size. I was able to implement the toggle and set lineLimit to nil to reflect that but the problem is that the top HStack is outside the height of the row and hidden behind the previous row. I used a binding variable to trigger the views to refresh but ho results.")
.fixedSize(horizontal: false, vertical: true)
.lineLimit(self.value ? nil : 2)
.padding(.horizontal, 10)
HStack {
Spacer()
Button(action: {
withAnimation {
self.value.toggle()
}
}, label: {
if self.value {
Text("show less")
} else {
Text("show more")
}
}).padding(.horizontal, 10)
}
}
.animation(.easeInOut)
}
}
struct ContentView: View {
var body: some View {
FeedRow()
}
}
它仍然存在一些问题,但我希望它有所帮助!
推荐阅读
- javascript - (:visible) 选择器在 jQuery + Jest 中不起作用
- git - 在 psexec 模式下无法从 git 中提取
- javascript - 如何在前一个函数内部的另一个函数中使用一个函数的输入?
- java - 尝试创建 ODI Partial Tag VCS 时出现“java.lang.ArrayIndexOutOfBoundsException: 2”
- r - R data.table 的 fread() 在每次读取尝试时将引号内的字符串加倍
- python - Django检查用户名是否以特殊字符开头并将其更改为使用更改的用户名进行身份验证
- java - 如何隐藏在 unix 中 grep 进程时显示的密码
- javascript - 使用 Firebase 中的对象属性删除对象 (React)
- c - 数字常量前应有“;”、“,”或“)”...我在 C 程序中遇到此错误
- symfony - 如何获得图像取决于一对多关系中的文章?