swiftui - SwiftUI:旋转后文本没有屏幕的全宽
问题描述
该应用程序仅支持肖像模式。应该显示两个问题,但它们会相应地轮换。所以玩家可以很好地看到问题,无论他们坐在哪里。
无论如何,似乎边界框在旋转时没有旋转。
ZStack {
HStack {
GeometryReader { proxy in
Text(challenge)
.rotationEffect(Angle(degrees: 90), anchor: .center)
.frame(maxWidth: proxy.size.height, minHeight: proxy.size.width)
.foregroundColor(.red)
.font(.largeTitle)
.background(Color.blue)
}
Spacer()
GeometryReader { proxy in
Text(challenge)
.rotationEffect(Angle(degrees: 270), anchor: .center)
.frame(maxWidth: proxy.size.height, minHeight: proxy.size.width)
.foregroundColor(.red)
.font(.largeTitle)
.background(Color.blue)
}
}
}
我尝试了很多不同的东西。我省略了GeometryReader
并使用了“fixedSize()”。然后我得到一个穿过屏幕的单行。
我也尝试过这个解决方案,但它没有按预期工作。
我的结果始终是不使用全宽的文本。(重叠只是另一个错误,但我一定会控制住它)。
解决方案
这是一个可能的方法的演示。使用 Xcode 12.1 / iOS 14.1 准备
struct DemoView: View {
var body: some View {
HStack {
RotatedText(text: lorem, angle: Angle(degrees: 90))
RotatedText(text: lorem, angle: Angle(degrees: -90))
}
}
}
struct RotatedText: View {
let text: String
let angle: Angle
var color: Color = .blue
var body: some View {
color.overlay(
GeometryReader { gp in
VStack {
Text(text)
.frame(width: gp.size.height, height: gp.size.width)
.rotationEffect(angle)
}.frame(width: gp.size.width, height: gp.size.height)
}
)
}
}
推荐阅读
- java - 智能助手
- c# - 当在 Unity 中触摸 3d 对象时,如何使 int 增加一个
- r - R data.table:将逗号分隔的列“融化”成行?
- mysql - Nodejs 在 azure 函数中创建 csv 文件并将文件作为附件通过电子邮件发送
- php - SQL IN 和 NOT IN 运算符在 PHP 中不起作用
- python - 在 python 中使用 pywebview 库重新加载/刷新网页
- mysql - 检查 JDBC 连接是否可写;使用 preferredTestQuery 或 ConnectionTester
- ios - 如何读取 HEAD 请求的 http 状态码
- java - java.lang.NoClassDefFoundError: IntelliJ 上的 org/junit/rules/TestRule
- python - Python cx_Oracle - 传递带有额外值的字典时的非法绑定变量