swift - 在 UIKit 中呈现 ViewController 时,SwiftUI 文本消失
问题描述
如果标题不够清晰,请见谅。我使用 SwiftUI 创建了一个条形图,并使用 UIHostingController 将其添加到使用 UIKit 制作的视图控制器中。当我第一次启动应用程序时,所有文本都显示出来,一切似乎都正常,但是当我展示另一个视图控制器并返回初始视图控制器时,SwiftUI 文本没有出现,你只能看到条形图,查看我添加的视频以获得更好的理解。
这是条形图的代码LineChart.swift:
struct LineChart: View {
let wordsWrittenArray = [40, 80, 150, 90, 75, 180, 50]
let days = ["Su", "M", "T", "W", "Th", "F", "Sa"]
let totalWordCount = 400
var body: some View {
VStack {
Text("Word Count")
.font(.system(size: 34))
.fontWeight(.heavy)
.foregroundColor(Color(Colors.backgroundOppositeColor!))
HStack (spacing: 23) {
ForEach(0 ..< wordsWrittenArray.count) { index in
Bar(wordsWritten: CGFloat(wordsWrittenArray[index]), days: days[index])
}
}
Text("\(totalWordCount) Words")
.font(.system(size: 34))
.fontWeight(.heavy)
.foregroundColor(Color(Colors.backgroundOppositeColor!))
.padding(.top, 15)
}
}
}
// Create a struct for the bars
struct Bar: View {
var wordsWritten: CGFloat
var days: String
var body: some View {
VStack {
ZStack(alignment: .bottom) {
Capsule().frame(width: 25, height: 180)
.foregroundColor(Color(Colors.backgroundOppositeColor!))
Capsule().frame(width: 25, height: wordsWritten)
.foregroundColor(Color(Colors.themeColor!))
}
Text(days).padding(.top, 8)
.foregroundColor(Color(Colors.backgroundOppositeColor!))
}
}
}
这是我在视图控制器MainScreen.swift中使用 UIHostingController 的代码:
// Setup the SwiftUI Bar Chart View
func setupBarChartView() {
let barChartView = UIHostingController(rootView: LineChart())
self.addChild(barChartView)
view.addSubview(barChartView.view)
barChartView.didMove(toParent: self)
barChartView.view.backgroundColor = .clear
barChartView.view.translatesAutoresizingMaskIntoConstraints = false
barChartView.view.topAnchor.constraint(equalTo: featuredStoryView.bottomAnchor, constant: 30).isActive = true
barChartView.view.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
barChartView.view.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
barChartView.view.bottomAnchor.constraint(equalTo: notificationButton.topAnchor, constant: -25).isActive = true
}
这是视频:
感谢您的反馈!
解决方案
推荐阅读
- c - 为什么我们在评估 arr[arr[i]] 的值时要为 arr[i] 分配一个新值?
- python - 在已经安装请求后获取“NameError:名称'请求'未定义”(使用 JuypterLab)
- python-3.x - 是否可以使用免费且可移植(Windows 友好)的解决方案在 Python 3 中完全自定义 UI 应用程序?
- python - Python - 如何求解线性矩阵方程 AP + PA^T = Q for P (Q, A known)
- python - 用不同的名称屏蔽导入
- javascript - 使用 innerHTML、createElement 和纯 Javascript 动态创建音乐播放器
- java - FXML getLocation() 返回 null 即使我认为我设置正确
- typescript - 在 Vuex 中将 mapGetter 和 mapMutations 与 typescript 一起使用,而无需类样式组件 sintax
- reactjs - 如何在功能组件中定义 .this
- c# - xPath 仅适用于在同一级别找到的多个 div 标记之一