SwiftUI使用Form时上下视图间出现随机白线该如何解决?
问题根因
这条细白线是使用insetGrouped内嵌分组样式的Form/List底层自带的顶部默认分隔线,属于UIKit层UITableView的默认渲染特性,SwiftUI默认没有直接暴露隐藏该线的配置参数。
可行解决方案
方案1:使用SwiftUI原生分隔线隐藏修饰符(适配iOS 15+)
直接给Form添加列表section分隔线隐藏修饰符,仅隐藏顶部的分隔线即可,不会影响Form原有内嵌外观:
Form { TextField("Test", text: $test) } .listSectionSeparator(.hidden, edges: .top)
方案2:兼容低版本的全局样式修改
如果需要支持iOS 15以下版本,可以在Form出现时修改UITableView的全局默认配置,页面消失时改回默认值即可避免影响其他页面:
Form { TextField("Test", text: $test) } .onAppear { UITableView.appearance().sectionHeaderTopPadding = 0 UITableView.appearance().separatorColor = .clear } .onDisappear { UITableView.appearance().sectionHeaderTopPadding = UITableView.automaticDimension UITableView.appearance().separatorColor = nil }
方案3:极简适配方案
如果不需要考虑复杂兼容,直接给Form添加-1的顶部内边距,即可让白线被上方的色块遮挡,不会改变原有布局效果:
Form { TextField("Test", text: $test) } .padding(.top, -1)
内容的提问来源于stack exchange,提问作者Joe Scotto
相关产品推荐
相关产品推荐

