Estoy tratando de agregar una barra de herramientas dentro de la barra de título a una aplicación macOS usando SwiftUI, algo similar a lo que se muestra a continuación.
No puedo encontrar una manera de lograr esto usando SwiftUI. Actualmente, tengo mi barra de herramientas (que solo tiene un campo de texto) dentro de mi vista, pero quiero moverla a la barra de título.
Mi código actual:
struct TestView: View {
var body: some View {
VStack {
TextField("Placeholder", text: .constant("")).padding()
Spacer()
}
}
}
Entonces, en mi caso, necesito tener el campo de texto dentro de la barra de herramientas.
macos
swiftui
macos-catalina
Bijoy Thangaraj
fuente
fuente
Respuestas:
Enfoque 1:
Esto se hace agregando un accesorio de barra de título. Pude hacer esto modificando el archivo AppDelegate.swift. Tuve que aplicar un relleno extraño para que se vea bien.
AppDelegate.swift
TitlebarAccessory.swift
Resultado:
Enfoque 2 (Método alternativo):
La idea aquí es hacer la parte de la barra de herramientas usando storyboard y el resto de la aplicación usando SwiftUI. Esto se hace creando una nueva aplicación con storyboard como interfaz de usuario. Luego vaya al guión gráfico y elimine el controlador de vista predeterminado y agregue uno nuevo
NSHostingController
. Conecte el controlador de alojamiento recientemente agregado a la ventana principal configurando su relación. Agregue su barra de herramientas a la ventana usando el generador de interfaces.Adjunte una clase personalizada a su
NSHostingController
y cargue su vista SwiftUI en ella.Código de ejemplo a continuación:
El uso de este enfoque también le brinda la posibilidad de personalizar la barra de herramientas.
fuente