正如标题所示,我希望偏移一些视图,即Circle
的内部HStack
,但是这样做会导致奇怪的行为,其中 HStack 的框架不再正确地包装内容。我需要这个“偏移”操作来仍然允许正确的前导和尾随填充,而没有空白。我也考虑过使用 a ZStack
,但是我觉得这可能很麻烦,因为我需要它来“包装”我的内容,而不是占用所有可用空间。
HStack {
ForEach(novaraUsers.indices, id: \.self) { index in
let user = novaraUsers[index]
if index < visibleUserCount + 1 {
Group {
if index < visibleUserCount {
Circle()
.fill(.white)
.stroke(Color.getRandomColor(from: user.username), lineWidth: 4)
.foregroundColor(.white)
.frame(width: 50, height: 50)
.overlay(
Text(user.username.prefix(1))
.font(.title)
.foregroundColor(.black)
.font(.h1)
)
} else {
Circle()
.fill(.white)
.stroke(Color.getRandomColor(from: String(novaraUsers.count)), lineWidth: 4)
.foregroundColor(.white)
.frame(width: 50, height: 50)
.overlay(
Text("\(moreThanCount)+")
.font(.title)
.foregroundColor(.black)
.font(.h1)
)
}
}
.offset(x: CGFloat(offsetPerCircle * index) * -1)
}
}
}
.frame(width: CGFloat(50 * (visibleUserCount + moreThanCount)))
.border(.black, width: 2)