我正在嘗試將 Android 應用程式移植到 iOS。我希望文本欄位在中間對齊。我如何實作這一目標?這是到目前為止的代碼:
var body: some View
{
GeometryReader
{
metrics in
VStack (alignment: .center)
{
Text("Lazuli Social")
.font(.largeTitle)
.foregroundColor(Color(red: 0.02, green: 0.325, blue: 1.0))
TextField("Username or email", text: $user)
.textFieldStyle(.roundedBorder)
.frame(width: metrics.size.width*0.80)
.background(Color.orange)
}
}
}
uj5u.com熱心網友回復:
您可以使用alignment的frame的VStack。您還需要將 設定maxWidth為infinity使其擴展。
struct ContentView: View {
@State private var user = ""
var body: some View
{
GeometryReader
{
metrics in
VStack
{
Text("Lazuli Social")
.font(.largeTitle)
.foregroundColor(Color(red: 0.02, green: 0.325, blue: 1.0))
TextField("Username or email", text: $user)
.textFieldStyle(.roundedBorder)
.frame(width: metrics.size.width*0.80)
.background(Color.orange)
}
.frame(maxWidth: .infinity, alignment: .center) //<-- Here
}
}
}
一般來說,GeometryReader除非絕對需要尺碼,否則您可能希望盡量避免使用。例如,在這里,您可能想嘗試一下padding(盡管它給出的結果略有不同——它不再總是寬度的 80%)。
struct ContentView: View {
@State private var user = ""
var body: some View
{
VStack
{
Text("Lazuli Social")
.font(.largeTitle)
.foregroundColor(Color(red: 0.02, green: 0.325, blue: 1.0))
TextField("Username or email", text: $user)
.textFieldStyle(.roundedBorder)
.background(Color.orange)
.padding(.horizontal, 20)
}
.frame(maxWidth: .infinity, alignment: .center)
}
}
uj5u.com熱心網友回復:
也許嘗試: .multilineTextAlignment(.center)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/396576.html
