我想使用 SwiftUI 应用程序生命周期,但我的应用程序用于NSTitlebarAccessoryViewController在工具栏下方显示工具选项栏:
具体来说,我这样做:
let toolSettingsView = NSHostingView(rootView: ToolAccessoryView(model: model))
let vc = NSTitlebarAccessoryViewController()
vc.view = toolSettingsView
vc.fullScreenMinHeight = accessoryHeight // Ensure tool settings are visible in full screen.
toolSettingsView.frame.size = toolSettingsView.fittingSize
window?.addTitlebarAccessoryViewController(vc)
Run Code Online (Sandbox Code Playgroud)
有没有一种(实用的)方法可以使用纯 SwiftUI 模仿控件外观(滑块等)?当使用 SwiftUI 视图时,我得到了这个:
代码如下所示:
struct MainView: View {
var model: DataModel
var undoManager: UndoManager
var body: some View {
VStack {
ToolAccessoryView(model: model)
SculptingView(model: model, undoManager: undoManager)
}
}
}
Run Code Online (Sandbox Code Playgroud)
从 macOS 13 开始,这是通过使用自定义工具栏放置标识符来实现的,如下所示:
extension ToolbarItemPlacement {
static let toolOptionsBar = ToolbarItemPlacement(id: "com.companyname.toolOptions")
}
Run Code Online (Sandbox Code Playgroud)
然后指定位置.toolbar:
ToolbarItem(placement: .toolOptionsBar) {
ToolAccessoryView()
}
Run Code Online (Sandbox Code Playgroud)
在我的例子中看起来像这样:
滑块上的颜色有点奇怪,这可能是他们的错误。
另请参阅https://developer.apple.com/documentation/swiftui/toolbarplacement/init(id:)其中有一些示例代码。
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |