这是我想要的布局。
GeometryReader
但是我也想使用Text
,当我将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())
内时,它将占据整个高度。
declare module 'nodemailer-html-to-text' {
import * as Mail from 'nodemailer/lib/mailer'
export function htmlToText(): Mail.PluginFunction
}
我该如何解决?
答案 0 :(得分:0)
警告⚠️:这是当Geomtery读者无法帮助我解决几何问题时,我开始将我的头撞在墙上
这是您可以做的:
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)
}
}
}
通过使用height作为计算属性来手动设置TestView的高度。
有关如何估算默认字体高度的背景故事
按 shift + 命令 + 4 使用指针找到相对y位置之间的差异