3

我正在尝试Text在 ZStack 中对齐视图。它适用于较大的屏幕,如 iphone 11 plus max,但在较小的屏幕上,如果我使用如下所示的尾随或前导对齐,文本将离开屏幕。我在预览版、模拟器和真正的 SE 设备上得到了相同的结果。

iPhone SE(第 2 代)屏幕截图显示照片归属文本的未对齐文本。

iPhone SE(第二代截图)

import SwiftUI

struct ItemDetail: View {
    var item: MenuItem
    var body: some View {
        VStack {
            ZStack(alignment: .bottomTrailing) {
                Image(item.mainImage)
                Text("Photo: \(item.photoCredit)")
                    .padding(4)
                    .font(.caption)
                    .background(Color.black)
                    .foregroundColor(.white)
            }
            Text(item.description)
                .padding()
            Spacer()
        }
        .navigationBarTitle(Text(item.name), displayMode: .inline)
    }
}
4

2 回答 2

4

我认为您的代码很好,问题是您的图像太宽并且在屏幕右侧溢出。文本标签正确对齐图像的尾部(这就是它在更大的设备上工作的原因),而不是屏幕的尾部(你想要的)。

您应该确保您的图像不会溢出。

Image(item.mainImage)
   .resizable()
   .scaleToFit()
于 2020-10-09T11:32:10.667 回答
1

我会使用 GeomteryReader。就像这样:

GeometryReader { geo in
      Text(item.description)          
      .fixedSize(horizontal: false, vertical: true)
      .frame(width: geo.size.width, alignment: .leading)
}
于 2020-10-09T11:08:50.840 回答