列表上下文中 SwiftUI 按钮的样式差异:iOS 15 与更早版本
Posted
技术标签:
【中文标题】列表上下文中 SwiftUI 按钮的样式差异:iOS 15 与更早版本【英文标题】:Styling differences in SwiftUI Button in list context: iOS 15 vs. earlier 【发布时间】:2021-10-02 19:42:27 【问题描述】:用这个例子:
struct ContentView: View
let items = ["Hello, world!"]
var body: some View
List
Button(action:
, label:
Text("Hello, world!")
)
.listRowBackground(Color.gray)
在 ios 14 上,这看起来像:
在 iOS 15 上,它现在看起来像:
样式差异的数量相当令人惊讶:
-
圆角:在 iOS 15 中,但不是更早的版本
文字颜色:iOS 15 早期为蓝色和白色。
视图的宽度——在 iOS 15 中要窄得多
这只是 iOS 15 的预期变化吗?
是否有不发生这些变化的标准方法?即,保留早期的样式?
【问题讨论】:
Apple 会在每个新的操作系统版本中定期更改 UI 样式,因此只要您使用默认样式,您的应用程序就会在操作系统上以原生方式显示。如果您想拥有独特的持久风格,请在任何地方开发和使用基于低级 UI 原语的完全自定义 UI。 什么low level UI primitives
?斯威夫特? UIKit?我还没有在 UIKit 中经历过如此大的变化。您知道说明这些更改的文档吗?
【参考方案1】:
是的,Apple 已更改其默认 UI 元素状态。这也可以在 Safari 中看到,其中网页没有用于表单的 CSS。
【讨论】:
你知道这些州的文件吗? 我没有看到苹果的任何“更改文档”,但要更改 UI,您只需将其从默认状态更改【参考方案2】:帮助我的具体答案是使用.listStyle
。在我的原始代码中,我没有使用.listStyle
,显然默认值已更改。所以,如果我这样做:
struct ContentView: View
let items = ["Hello, world!"]
var body: some View
List
Button(action:
, label:
Text("Hello, world!")
)
.listRowBackground(Color.gray)
.listStyle(PlainListStyle())
我得到的结果更接近我想要的。
显然.listStyle
默认现在是insetGrouped
,这不是我想要的。
【讨论】:
以上是关于列表上下文中 SwiftUI 按钮的样式差异:iOS 15 与更早版本的主要内容,如果未能解决你的问题,请参考以下文章
iOS |斯威夫特 |按钮在 HStack 中不起作用 |我该如何解决这个问题,有解决方法吗?
SwiftUI - HStack NavigationLink“按钮”分别向两个元素添加按钮样式?
在 swiftUI 列表中添加、选择和删除文件名 - MacOS