SwiftUI 部分 header - 使用非大写字母?
SwiftUI Section header - use non uppercase?
创建列表如下:
struct ContentView: View {
var body: some View {
List {
Section(header: Text("Header")) {
Text("Row 1")
Text("Row 2")
}
}
.listStyle(PlainListStyle())
}
}
在 header 部分使用大写文本。
有没有办法强制 header 文本保留其原始大小写?
Section 上有一个 textCase(nil) 修饰符,它尊重原始文本大小写,适用于 iOS 14
来自 Apple 的开发者论坛:https://developer.apple.com/forums/thread/655524
Section(header: Text("Section Title")) {
[...]
}.textCase(nil)
对于同时适用于 iOS 13 和 14 的解决方案,您可以创建一个自定义修饰符,只为 iOS 14 设置 textCase:
struct SectionHeaderStyle: ViewModifier {
func body(content: Content) -> some View {
Group {
if #available(iOS 14, *) {
AnyView(content.textCase(.none))
} else {
content
}
}
}
}
然后你可以像这样将它应用到你的部分:
Section(header: Text("Section Name")) {
...
}.modifier(SectionHeaderStyle())
这是苹果论坛建议的改编版本:https://developer.apple.com/forums/thread/650243
我想添加我的解决方案,我觉得它可以很方便地处理这个问题。我只是制作了一个用于 headers.
部分的自定义文本组件
import SwiftUI
struct SectionHeaderText: View {
var text: String
var body: some View {
if #available(iOS 14.0, *) {
Text(text).textCase(nil)
} else {
Text(text)
}
}
}
然后我这样使用它:
Section(header: SectionHeaderText(text: "Info"), ...
用 #available(iOS 14.0, *)
缓解了整个情况并得到了我想要的结果 :) 也许这对外面的人有帮助!
创建列表如下:
struct ContentView: View {
var body: some View {
List {
Section(header: Text("Header")) {
Text("Row 1")
Text("Row 2")
}
}
.listStyle(PlainListStyle())
}
}
在 header 部分使用大写文本。
有没有办法强制 header 文本保留其原始大小写?
Section 上有一个 textCase(nil) 修饰符,它尊重原始文本大小写,适用于 iOS 14
来自 Apple 的开发者论坛:https://developer.apple.com/forums/thread/655524
Section(header: Text("Section Title")) {
[...]
}.textCase(nil)
对于同时适用于 iOS 13 和 14 的解决方案,您可以创建一个自定义修饰符,只为 iOS 14 设置 textCase:
struct SectionHeaderStyle: ViewModifier {
func body(content: Content) -> some View {
Group {
if #available(iOS 14, *) {
AnyView(content.textCase(.none))
} else {
content
}
}
}
}
然后你可以像这样将它应用到你的部分:
Section(header: Text("Section Name")) {
...
}.modifier(SectionHeaderStyle())
这是苹果论坛建议的改编版本:https://developer.apple.com/forums/thread/650243
我想添加我的解决方案,我觉得它可以很方便地处理这个问题。我只是制作了一个用于 headers.
部分的自定义文本组件import SwiftUI
struct SectionHeaderText: View {
var text: String
var body: some View {
if #available(iOS 14.0, *) {
Text(text).textCase(nil)
} else {
Text(text)
}
}
}
然后我这样使用它:
Section(header: SectionHeaderText(text: "Info"), ...
用 #available(iOS 14.0, *)
缓解了整个情况并得到了我想要的结果 :) 也许这对外面的人有帮助!