listRowSeparatorLeading
是 SwiftUI 中引入的一种对齐指南(alignment guide),用于精确控制 List
列表中每一行分隔线(separator)的起始位置。该功能在 iOS 16 及更高版本中可用,允许开发者根据视图内容自定义分隔线的对齐方式。
🧭 功能概述 #
在默认情况下,SwiftUI 的 List
组件会自动为每一行添加分隔线,其起始位置通常与文本内容对齐。然而,当列表行中包含图像或其他非文本元素时,分隔线可能不会与这些元素对齐,导致视觉上的不一致。通过使用 listRowSeparatorLeading
,可以手动调整分隔线的起始位置,使其与特定的视图元素对齐,从而实现更精细的界面布局。
🧪 示例代码 #
以下是一个使用 listRowSeparatorLeading
的示例,展示如何将分隔线与列表行中的图像对齐:
List {
ForEach(1..<6) { number in
HStack {
Image(systemName: "\(number).circle")
.alignmentGuide(.listRowSeparatorLeading) { dimensions in
dimensions[.leading]
}
Text("项目 \(number)")
}
}
}
在上述代码中,alignmentGuide(.listRowSeparatorLeading)
被应用于 Image
视图,使得分隔线的起始位置与图像的前缘对齐,而不是默认的文本前缘。(Stack Overflow)
🎯 自定义对齐位置 #
除了将分隔线与特定视图元素对齐外,还可以通过返回固定的数值来设置分隔线的起始位置。例如,以下代码将分隔线的起始位置设置为列表行的最左边缘:
.alignmentGuide(.listRowSeparatorLeading) { _ in 0 }
此外,还可以根据需要调整分隔线的偏移量,例如向右移动 40 点:
.alignmentGuide(.listRowSeparatorLeading) { dimensions in
dimensions[.listRowSeparatorLeading] + 40
}
这种方式提供了灵活的控制,使开发者能够根据界面设计需求精确地调整分隔线的位置。
🔗 相关资源 #
Apple Developer Documentation: listRowSeparatorLeading
Sarunw 博客文章: How to adjust List row separator insets in SwiftUI