如何在 SwiftUI MacOS 应用程序中使用 NSTouchBar?
How can I use NSTouchBar in SwiftUI MacOS App?
我正在尝试在 SwiftUI 中为我的 MacOS 应用程序添加 TouchBar 支持。
我发现我必须打电话..
NSApp.isAutomaticCustomizeTouchBarMenuItemEnabled = true
.. 在我的 AppDelegate 中。但是现在创建 TouchBar
的最佳方法是什么?我可以将它添加到我的 Mac 应用程序菜单的 Storyboard 中,还是需要以编程方式创建它?
当我按照 Apple 文档进行操作时,我发现了这一点:
You create a Touch Bar by adding one to a view controller in the storyboard, or by creating one programmatically by overriding NSResponder's makeTouchBar() function.
是否可以创建一个自己的 NSViewController 然后将其嵌入到可表示的 NSNiewController 中?
也许有人对我如何在 SwiftUI 中支持 TouchBar 有很好的建议。
最简单的方法就是在您的逻辑适用时为视图使用特定标识符,如下例所示
struct ContentView: View {
var body: some View {
SomeView() // << your view here
.touchBar {
Button("Do") {
// .. Do something here
}
}
}
}
所以当视图出现时,相关的 Touch Bar 按钮也会出现。
对于更复杂的情况,您可以在 TouchBar
和相应的扩展名
处查看
extension View {
/// Sets the `TouchBar` to be shown in the Touch Bar when applicable.
@available(iOS, unavailable)
@available(tvOS, unavailable)
@available(watchOS, unavailable)
public func touchBar<Content>(_ touchBar: TouchBar<Content>) -> some View where Content : View
/// Sets the `TouchBar` content to be shown in the Touch Bar when applicable.
@available(iOS, unavailable)
@available(tvOS, unavailable)
@available(watchOS, unavailable)
public func touchBar<Content>(@ViewBuilder content: () -> Content) -> some View where Content : View
}
我正在尝试在 SwiftUI 中为我的 MacOS 应用程序添加 TouchBar 支持。
我发现我必须打电话..
NSApp.isAutomaticCustomizeTouchBarMenuItemEnabled = true
.. 在我的 AppDelegate 中。但是现在创建 TouchBar
的最佳方法是什么?我可以将它添加到我的 Mac 应用程序菜单的 Storyboard 中,还是需要以编程方式创建它?
当我按照 Apple 文档进行操作时,我发现了这一点:
You create a Touch Bar by adding one to a view controller in the storyboard, or by creating one programmatically by overriding NSResponder's makeTouchBar() function.
是否可以创建一个自己的 NSViewController 然后将其嵌入到可表示的 NSNiewController 中?
也许有人对我如何在 SwiftUI 中支持 TouchBar 有很好的建议。
最简单的方法就是在您的逻辑适用时为视图使用特定标识符,如下例所示
struct ContentView: View {
var body: some View {
SomeView() // << your view here
.touchBar {
Button("Do") {
// .. Do something here
}
}
}
}
所以当视图出现时,相关的 Touch Bar 按钮也会出现。
对于更复杂的情况,您可以在 TouchBar
和相应的扩展名
extension View { /// Sets the `TouchBar` to be shown in the Touch Bar when applicable. @available(iOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable) public func touchBar<Content>(_ touchBar: TouchBar<Content>) -> some View where Content : View /// Sets the `TouchBar` content to be shown in the Touch Bar when applicable. @available(iOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable) public func touchBar<Content>(@ViewBuilder content: () -> Content) -> some View where Content : View }