¿Cómo hago UISegmentedControl
una parte de UINavigationBar
debajo de ella? ¿Está conectado al controlador de vista UINavigationBar
o es una vista completamente separada que se acaba de agregar como una subvista al UINavigationController
controlador de vista? Parece que es parte del UINavigationBar
ya que hay una sombra debajo de la barra.
ios
uinavigationbar
uisegmentedcontrol
yoeriboven
fuente
fuente
Respuestas:
Es un efecto simple de lograr.
Primero, coloque un segmento en una barra de herramientas. Coloque esta barra de herramientas justo debajo de la barra de navegación. Ajuste el delegado de la barra de herramientas a su controlador de vista, y volver
UIBarPositionTopAttached
enpositionForBar:
. Puede ver en la aplicación de la tienda, si realiza un gesto emergente interactivo, que la barra de segmento no se mueve igual que la barra de navegación. Eso es porque no son el mismo bar.Ahora para eliminar la línea del cabello. La "línea del cabello" es
UIImageView
una subvista de la barra de navegación. Puede encontrarlo y configurarlo como oculto. Esto es lo que hace Apple en su aplicación de calendario nativa, por ejemplo, así como en la aplicación de la tienda. Recuerde mostrarlo cuando desaparezca la vista actual. Si juega un poco con las aplicaciones de Apple, verá que la línea del cabello está configurada como ocultaviewWillAppear:
y se muestra enviewDidDisappear:
.Para lograr el estilo de la barra de búsqueda, simplemente establezca la barra
searchBarStyle
enUISearchBarStyleMinimal
.fuente
initWithRect: CGRectMake(0, self.toplayoutGuide.length, 320, 44)
o tal vez usar el diseño automático para colocarlo? ¿Cuál será la nueva parte superior de childViews, seráself.toplayoutGuide.length + 44
?Otro enfoque sería buscar la línea del cabello y moverla debajo de la barra de herramientas agregada. Esto es lo que se me ocurrió.
También encontré la muestra de código de Apple NavBar (Customizing UINavigationBar) muy útil para resolver este problema.
También asegúrese de manipular el borde superior de UIToolbar , podría aparecer y podría confundirlo con la línea del cabello de NavBar. También quería que la barra UIToolbar se viera exactamente como la barra de navegación, entonces probablemente quieras ajustar las barras de herramientas
barTintColor
.fuente
Aquí hay un enfoque Swift orientado a protocolos para este problema particular, basado en la respuesta aceptada:
HideableHairlineViewController.swift
SampleViewController.swift
fuente
shadowImage
propiedad de la barra de navegación.Puede encontrar la barra de navegación con UISegmentedControl en el código de muestra de Apple: https://developer.apple.com/library/ios/samplecode/NavBar/Introduction/Intro.html
O puede crearlo programáticamente, aquí está el código en mi respuesta en el otro hilo Agregue control segmentado a la barra de navegación y mantenga el título con botones
fuente
Quería hacer lo mismo ... Y obtuve esto:
1 - subclase UINavigationBar
2 - Configure su NavigationController con subclase
3 - Agregue su UISegmentedControl en navigationBar
4 - Corre y Diversión -> no olvides poner el mismo color en ambos
fuente de búsqueda:
Hackear UINavigationBar
SO pregunta
fuente
UINavigationButton
es una API privada y su aplicación será rechazada por usarla. Debe intentar enmascarar el uso de esa clase.Apple tiene una aplicación de muestra específicamente para esto. Describe la configuración de una imagen de sombra transparente y una imagen de fondo de color para la barra de navegación y cómo configurar una vista debajo de la barra de navegación. También tiene ejemplos de otras personalizaciones de la barra de navegación.
Ver https://developer.apple.com/library/ios/samplecode/NavBar/Introduction/Intro.html
fuente
Intenté eliminar la línea del cabello usando el método de @ Simon pero no funcionó. Probablemente estoy haciendo algo mal porque soy super novato. Sin embargo, en lugar de eliminar la línea, simplemente puede ocultarla usando el
hidden
atributo. Aquí está el código:¡Espero que esto ayude a alguien!
fuente
UISegmentedControl debajo de UINavigationbar en swift 3/4
Detalles
Xcode 9.2, rápido 4
Muestra completa
Resultados
fuente
UINavigationController
?Hay muchas formas de hacer lo que pidió. El más fácil es, por supuesto, crearlo en el generador de interfaces, pero supongo que esto no es lo que tenía en mente. Creé un ejemplo de la imagen que publicaste arriba. No es exactamente lo mismo, pero puede jugar con las numerosas propiedades para obtener la apariencia de lo que está buscando.
En ViewController.h
En el ViewController.m
fuente
displaysSearchBarInNavigationBar es la forma de mostrar una barra de búsqueda, así como su barra de alcance en la barra de navegación.
solo necesita ocultar la barra de búsqueda cada vez que muestre un título personalizado
fuente