You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.5 KiB
79 lines
2.5 KiB
import SwiftUI
|
|
import UIKit
|
|
import shared
|
|
|
|
class TransparentStatusBarViewController: UIViewController {
|
|
private let composeViewController: UIViewController
|
|
|
|
init() {
|
|
self.composeViewController = MainViewControllerKt.MainViewController()
|
|
Platform_iosKt.doInitLogger()
|
|
super.init(nibName: nil, bundle: nil)
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
// 设置视图背景透明
|
|
view.backgroundColor = UIColor.clear
|
|
|
|
// 添加Compose视图控制器作为子控制器
|
|
addChild(composeViewController)
|
|
view.addSubview(composeViewController.view)
|
|
composeViewController.didMove(toParent: self)
|
|
|
|
// 设置约束,让Compose视图填满整个屏幕
|
|
composeViewController.view.translatesAutoresizingMaskIntoConstraints = false
|
|
NSLayoutConstraint.activate([
|
|
composeViewController.view.topAnchor.constraint(equalTo: view.topAnchor),
|
|
composeViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
composeViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
composeViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor)
|
|
])
|
|
|
|
// 设置Compose视图背景透明
|
|
composeViewController.view.backgroundColor = UIColor.clear
|
|
}
|
|
|
|
override var preferredStatusBarStyle: UIStatusBarStyle {
|
|
return .lightContent // 白色状态栏文字
|
|
}
|
|
|
|
override var prefersStatusBarHidden: Bool {
|
|
return false // 显示状态栏
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
|
|
// 确保状态栏样式更新
|
|
setNeedsStatusBarAppearanceUpdate()
|
|
|
|
// 配置导航控制器(如果存在)
|
|
navigationController?.setNavigationBarHidden(true, animated: false)
|
|
}
|
|
}
|
|
|
|
struct ComposeView: UIViewControllerRepresentable {
|
|
func makeUIViewController(context: Context) -> UIViewController {
|
|
return TransparentStatusBarViewController()
|
|
}
|
|
|
|
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
|
|
}
|
|
|
|
struct ContentView: View {
|
|
var body: some View {
|
|
ComposeView()
|
|
.ignoresSafeArea(.all) // 让内容延伸到所有安全区域,包括状态栏和导航栏
|
|
.preferredColorScheme(.light) // 设置为浅色模式以确保状态栏文字可见性
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
ContentView()
|
|
}
|
|
|