1

我有一个看起来像这样的 SwiftUI 视图:

@State var showFullScreen: Bool = false

ZStack {
    Image(uiImage: image)
        .resizable()
        .aspectRatio(contentMode: showFullscreen ? .fill : .fit)
        .padding(showFullscreen ? 0 : 16)
            
    VStack {
        Spacer()
                
        Label("{switchViewsMessage}".localized(), systemImage: "hand.point.up.left.fill")
            .frame(maxWidth: .infinity, alignment: .center)
            .padding()
            .background(bgColor)
            .applyShape(.rounded)
    }
    .padding()
}
.onTapGesture { withAnimation { showFullscreen.toggle() } }
.navigationBarTitle("{photo}".localized())

State设置为 时showFullScreen = false,一切看起来都像预期的那样。但是,当设置showFullScreen为时true,图像会变为.fill占据整个屏幕,但带有灰色背景的文本也会变得比屏幕宽。

为什么在更改状态时文本也会扩大宽度?

4

1 回答 1

1

有什么方法可以让图像扩展而文本只能填充可用的屏幕空间?

改用以下模式 - 通过将每个图像和文本放置在自己的空间中来分隔图像和文本:背景中的图像,覆盖中的文本,例如

Color.clear           // << fills screen space (taking into account safe area
  .background(

     ... your image here

  )
  .overlay(

    VStack {
       ... your text here
    }

  )
  .onTapGesture { withAnimation { showFullScreen.toggle() } }
于 2021-04-18T15:23:30.107 回答