提问人:Satyam 提问时间:6/23/2023 更新时间:6/23/2023 访问量:35
swift 和 swift UI 中的多行字符串使用绑定对象
Multiline string in swift and swift UI using binding object
问:
我正在创建一个自定义横幅或错误视图,如附加图像所示。 下面的代码是我的观点:
struct BannerModifier: ViewModifier {
@Binding var data: NotificationBannerData
@Binding var show: Bool
func body(content: Content) -> some View {
ZStack {
content
if show {
VStack {
HStack {
VStack(alignment: .leading, spacing: 2) {
Text(data.title)
.bold()
HStack {
Image(data.iconName)
Text(data.detail)
.modifier(LinkText13Modifier())
}.padding(.bottom, 10)
}
Spacer()
}
.padding(12)
.background(data.type.tintColor)
.cornerRadius(8)
Spacer()
}
.padding()
.animation(.easeInOut)
.transition(AnyTransition.move(edge: .top).combined(with: .opacity))
.onTapGesture {
withAnimation {
self.show = false
}
}.onAppear(perform: {
DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
withAnimation {
self.show = false
}
}
})
}
}
}
}
以下是我的预览:
struct Banner_Previews: PreviewProvider {
static var previews: some View {
let obj = Binding<NotificationBannerData>(get: { NotificationBannerData(title: "Title", detail: """
Detailed message that has to be displayed
when we have multiple lines to be displayed in \
the banner
""", type: .error, iconName: "icon_red") }, set: { _ in })
let showVal = Binding<Bool> (get: { true }, set: { _ in })
// Pass the binding object to the view
HStack {
Text("Show banner")
}
.banner(data: obj, show: showVal)
}
}
问题是当我有多行字符串时,它不能正确显示。它显示为 3 行,预期是有一个带换行的字符串。
答: 暂无答案
评论
Binding
set
Binding
.lineLimit(1)