闽公网安备 35020302035485号
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()
}
}
这个例子中,我做了一个可以用滑块调整大小的容器。当你拖动滑块改变容器尺寸时,神奇的一幕发生了:
优雅降级显示:内容可以根据可用空间自动"精简版"→"超精简版"