Layout 如何在不填充视图的情况下使用GeometryReader
这就是我的目标布局Layout 如何在不填充视图的情况下使用GeometryReader,layout,swiftui,geometryreader,Layout,Swiftui,Geometryreader,这就是我的目标布局 import SwiftUI import PlaygroundSupport struct TestView: View { let text: String var body: some View { Text(self.text) } } struct ContentView: View { var body: some View { ZStack {
import SwiftUI
import PlaygroundSupport
struct TestView: View {
let text: String
var body: some View {
Text(self.text)
}
}
struct ContentView: View {
var body: some View {
ZStack {
TestView(text: "bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla")
.frame(width: 250)
.background(Color.red)
}
}
}
PlaygroundPage.current.setLiveView(ContentView())
但是我还想使用GeometryReader
,当我将文本
放在GeometryReader
中时,它将占据整个高度
import SwiftUI
import PlaygroundSupport
struct TestView: View {
let text: String
var body: some View {
GeometryReader { reader in
Text(self.text)
}
}
}
struct ContentView: View {
var body: some View {
ZStack {
TestView(text: "bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla")
.frame(width: 250)
.background(Color.red)
}
}
}
PlaygroundPage.current.setLiveView(ContentView())
我怎样才能避开这个问题?警告⚠️ : 这时geometry reader无法帮助我学习几何,我开始把头撞到墙上 以下是您可以做的:
struct ContentView: View {
var text = "bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla"
var width : CGFloat = 250
var height: CGFloat {
var size : CGFloat
let chars = self.width / 14 // assuming width of 1 character is 14 which is the case by default for Text view
let lines = CGFloat(text.count) / chars
size = CGFloat(14 * (lines + 1))
return size
}
var body: some View {
ZStack {
TestView(text: text)
.frame(width: width, height: height)
.background(Color.red)
}
}
}
使用高度作为计算属性,手动设置TestView的高度
关于我如何估计默认字体高度的背景故事
按shift+command+4
使用指针并查找相对y位置之间的差异⚠️ : 这时geometry reader无法帮助我学习几何,我开始把头撞到墙上 以下是您可以做的:
struct ContentView: View {
var text = "bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla"
var width : CGFloat = 250
var height: CGFloat {
var size : CGFloat
let chars = self.width / 14 // assuming width of 1 character is 14 which is the case by default for Text view
let lines = CGFloat(text.count) / chars
size = CGFloat(14 * (lines + 1))
return size
}
var body: some View {
ZStack {
TestView(text: text)
.frame(width: width, height: height)
.background(Color.red)
}
}
}
使用高度作为计算属性,手动设置TestView的高度
关于我如何估计默认字体高度的背景故事
按shift+command+4
使用指针并找到相对y位置之间的差异这不是错误-这是一个预期功能。我知道,但如何使用geometryreader实现顶部布局?使用vstack INDER geometry和Spacer()在文本之后?这不是一个bug-这是一个预期功能。我知道,但如何使用geometryreader实现顶部布局?在文本之后使用vstack INDER geometry和Spacer()?