情景复现
在调试iOS应用时,发现分割线显示存在问题。

刚开始以为分割线太小,然后改为:
Rectangle()
.frame(height: 1) // 设置分割线的粗细
.padding(.leading, 30)
.foregroundColor(Color.gray) // 设置分割线的颜色

但是问题仍然存在,并且存在部分区域不显示。
当把目标金额使用的,HStack改为VStacks时,水平线显示:

但问题没有解决,我发现当我把第二个HStack的高度属性隐藏时,水平线是显示的,但排版又出现了问题。

最后,将第二个目标金额的代码全部隐藏,逐一显示出来,发现是第二段中的padding()导致的,我将padding()隐藏后,分隔线显示正常。

问题总结
最后的结论是因为padding导致分割线不显示,使用的排查方法也是对比法,将代码隐藏掉,依次进行对比排查原因。
至于为什么是HStack内的padding导致的,我也不是很清楚,因为我在外层的VStack中没有设置一个具体的高度,另外我测试时发现即使在外层的VStack中设置一个很高的高度,分割线还是不显示,只有空白区域,这也说明不是因为高度不够而挤压了分割线的显示区域。

因为这个小问题页困扰了我好一会,因此记录下来做一个案例分析。