ViewThatFits(in: .vertical) { // 首选方案(最完整的内容) VStack { Image(systemName: "swift") .imageScale(.large) .foregroundStyle(.tint) Text("我们迫不及待想看到你用 Swift 创造的作品") } .font(.system(size: 45)) .fontWeight(.ultraLight) .frame(width: 350, height: 350) // 备选方案一 Text("用 Swift 创造") .font(.system(size: 45)) .fontWeight(.ultraLight) // 堆代码 duidaima.com // 备选方案二 Text("Swift") .font(.system(size: 40)) .fontWeight(.ultraLight) // 备选方案三(最精简的内容) Image(systemName: "swift") .foregroundStyle(.tint) .font(.system(size: 40)) }
import SwiftUI struct ContentView: View { @Stateprivatevar frameSize: CGFloat = 350 @Stateprivatevar isEditing = false var body: some View { VStack { Spacer() VStack { ViewThatFits(in: .vertical) { // 豪华全餐 VStack { Image(systemName: "swift") .imageScale(.large) .foregroundStyle(.tint) Text("我们迫不及待想看到你用 Swift 创造的作品") } .font(.system(size: 45)) // 经济套餐 Text("用 Swift 创造") .font(.system(size: 45)) // 简易套餐 Text("Swift") // 应急口粮 Image(systemName: "swift") .foregroundStyle(.tint) } } .fontWeight(.ultraLight) .font(.system(size: 40)) .frame(width: frameSize, height: frameSize) .overlay { RoundedRectangle(cornerSize: CGSize(width: 12, height: 12)) .stroke(Color.blue, lineWidth: 1) } Spacer() Slider(value: $frameSize, in: 60...350) { isEditing in self.isEditing = isEditing } Text("框架大小: \(Int(frameSize))") } .padding() } }这个例子中,我做了一个可以用滑块调整大小的容器。当你拖动滑块改变容器尺寸时,神奇的一幕发生了:
优雅降级显示:内容可以根据可用空间自动"精简版"→"超精简版"