我有以下列表,该列表的每一行内都有一个视图,该视图是一个彩色矩形和一个内部文本(它是矩形形状的文本的背景)。
import SwiftUI
struct ListRow: View {
var name:String
var factor : CGFloat
var fillColor:Color
var body: some View {
GeometryReader { geometry in
VStack(spacing: 0) {
Text(self.name)
.frame(width: geometry.size.width, height: self.factor *
geometry.size.height)
.background(RoundedRectangle(cornerRadius:
5).fill(self.fillColor)).foregroundColor(.white)
Spacer()
}
}
}
}
我试图控制矩形在列表行高度内的位置。每个矩形都有其高度,问题在于,不管矩形的高度如何,矩形总是出现在列表行的中心。我试图在listRow的VStack或文本的frame()中使用alignment:.top
,但是没有任何效果。
import SwiftUI
struct ListView: View {
var range = 1...12
var body: some View {
List(self.range,id:\.self){
num in
ListRow(name: "Some Name", factor: CGFloat(1.5),fillColor:Color(.pink)).padding()
}
}
}
如何使内部视图从列表行的顶部出现?