我正在尝试适应UIToolbar
在UIViewRepresentable
SwiftUI 中使用它。我需要支持 iOS 13,否则我会在 iOS 14 中使用 Apple 的新工具栏。
到目前为止,我有在屏幕上显示工具栏的代码,但是对于没有主页按钮的设备,它不会扩展到屏幕底部的安全区域。
有人对UIToolbar
SwiftUI 中的完整实现有任何建议或参考吗?
图片:
https://i.stack.imgur.com/Weutp.png
我的代码:
// TestView.swift
var body: some View {
VStack {
Toolbar(items: [
UIBarButtonItem(
title: "Done",
style: .plain,
target: nil,
action: nil
])
}
}
// Toolbar.swift
import SwiftUI
import UIKit
import Foundation
struct Toolbar: UIViewRepresentable {
typealias UIViewType = UIToolbar
var items: [UIBarButtonItem]
var toolbar: UIToolbar
init(items: [UIBarButtonItem]) {
self.toolbar = UIToolbar()
self.items = items
}
func makeUIView(context: UIViewRepresentableContext<Toolbar>) -> UIToolbar {
toolbar.setItems(self.items, animated: true)
toolbar.barStyle = UIBarStyle.default
toolbar.sizeToFit()
return toolbar
}
func updateUIView(_ uiView: UIToolbar, context: UIViewRepresentableContext<Toolbar>) {
}
func makeCoordinator() -> Toolbar.Coordinator {
Coordinator(self)
}
final class Coordinator: NSObject, UIToolbarDelegate, UIBarPositioning {
var toolbar: Toolbar
var barPosition: UIBarPosition
init(_ toolbar: Toolbar) {
self.toolbar = toolbar
self.barPosition = .bottom
}
private func position(for: UIToolbar) -> UIBarPosition {
return .bottom
}
}
}