iOS15与更早版本中List内SwiftUI Button的样式差异及旧样式保留方案
问题解答
你提到的样式差异是iOS 15对SwiftUI组件的预期官方变更,iOS 15针对List容器、内嵌Button的默认样式规则做了全量更新,对齐系统最新的设计规范。
要保留iOS 14及更早版本的原有样式,可通过以下标准API修改:
- 给Button添加
.buttonStyle(.plain)修饰符,取消iOS 15默认的bordered按钮样式,消除默认蓝色文字、圆角、自动边距效果 - 给按钮内容添加
frame(maxWidth: .infinity, alignment: .leading)修饰符,让按钮撑满整行宽度,对齐旧版本的布局规则 - 若需要彻底取消List的默认分组缩进、圆角效果,可给List添加
.listStyle(.plain)修饰符
修改后的完整兼容代码如下:
struct ContentView: View { let items = ["Hello, world!"] var body: some View { List { Button(action: { }, label: { Text("Hello, world!") // 撑满整行宽度 .frame(maxWidth: .infinity, alignment: .leading) }) // 还原旧版按钮样式,兼容iOS 13+可写为 .buttonStyle(PlainButtonStyle()) .buttonStyle(.plain) .listRowBackground(Color.gray) } // 若需要完全移除列表默认圆角、缩进可打开下方注释 // .listStyle(.plain) } }
内容的提问来源于stack exchange,提问作者Chris Prince
相关产品推荐
相关产品推荐

