Estou tentando adicionar uma barra de ferramentas dentro da barra de título a um aplicativo macOS usando o SwiftUI, algo semelhante ao mostrado abaixo.
Não consigo descobrir uma maneira de conseguir isso usando o SwiftUI. Atualmente, tenho minha barra de ferramentas (que possui apenas um campo de texto) dentro da minha visualização, mas quero movê-la para a barra de título.
Meu código atual:
struct TestView: View {
var body: some View {
VStack {
TextField("Placeholder", text: .constant("")).padding()
Spacer()
}
}
}
Portanto, no meu caso, preciso ter o campo de texto dentro da barra de ferramentas.
macos
swiftui
macos-catalina
Bijoy Thangaraj
fonte
fonte
Respostas:
Abordagem 1:
Isso é feito adicionando um acessório da barra de título. Consegui fazer isso modificando o arquivo AppDelegate.swift. Eu tive que aplicar algum preenchimento estranho para fazer com que parecesse certo.
AppDelegate.swift
TitlebarAccessory.swift
Resultado:
Abordagem 2 (método alternativo):
A idéia aqui é fazer a parte da barra de ferramentas usando o storyboard e o restante do aplicativo usando o SwiftUI. Isso é feito criando um novo aplicativo com o storyboard como interface do usuário. Em seguida, vá para o storyboard, exclua o View Controller padrão e adicione um novo
NSHostingController
. Conecte o Hosting Controller recém-adicionado à janela principal, definindo seu relacionamento. Adicione sua barra de ferramentas à janela usando o construtor de interfaces.Anexe uma classe personalizada à sua
NSHostingController
e carregue sua visualização SwiftUI nela.Exemplo de código abaixo:
O uso dessa abordagem também permite personalizar a barra de ferramentas.
fonte