目標是擁有如下所示的內容:

我知道
HStack(spacing: 10) {
Text("Distance")
.rotationEffect(.degrees(270))
.foregroundColor(.black)
.minimumScaleFactor(0.01)
Rectangle()
.foregroundColor(.black)
.frame(width: 3)
.padding([.top, .bottom])
Spacer()
}
如您所見,文本超出框架并且框架保持其原始寬度,使得文本難以擁抱視圖的一側,而垂直線則難以擁抱文本的一側。
我能夠弄清楚如何獲得所需結果的唯一方法是使用.offset(x:)修飾符。但這感覺很混亂,我認為可能會導致錯誤。
有什么辦法可以隨文字一起旋轉框架?
我感謝您的幫助
uj5u.com熱心網友回復:
如果我們談論動態檢測,那么我們需要在旋轉之前測量文本框架并應用于改變寬度/高度的框架大小
注意:當然在簡化變體中,幀寬度可以只是硬編碼

這是主要部分:
@State private var size = CGSize.zero
var body: some View {
HStack(spacing: 10) {
Text("Distance")
.fixedSize() // << important !!
.background(GeometryReader {
Color.clear
.preference(key: ViewSizeKey.self, value: $0.frame(in: .local).size)
})
.onPreferenceChange(ViewSizeKey.self) {
self.size = $0 // << here !!
}
.rotationEffect(.degrees(270))
.frame(width: size.height, height: size.width) // << here !!
使用的偏好鍵:
public struct ViewSizeKey: PreferenceKey {
public typealias Value = CGSize
public static var defaultValue = CGSize.zero
public static func reduce(value: inout Value, nextValue: () -> Value) {
}
}
GitHub 上的測驗模塊/依賴項
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492865.html
標籤:迅速 代码 迅捷 swiftui-文本 swiftui-view
