Me encantaría crear un botón de "flecha hacia atrás" con bisel de flecha izquierda en a UIToolbar
.
Por lo que puedo decir, la única forma de obtener uno de estos es dejar la UINavigationController
configuración predeterminada y usar una para el elemento de la barra izquierda. Pero no hay forma de encontrar uno para crear uno UIBarButtonItem
, así que no puedo hacer uno en un estándar UIToolbar
, a pesar de que son muy similares a UINavigationBar
s.
Podría crearlo manualmente con imágenes de botón, pero no puedo encontrar las imágenes de origen en ningún lado. Tienen bordes de canal alfa, por lo que la captura de pantalla y el corte no obtendrán resultados muy versátiles.
¿Alguna idea más allá de la captura de pantalla para cada tamaño y combinación de colores que pretendo usar?
Actualización: POR FAVOR DEJE DE esquivar la pregunta y sugiera que no debería preguntar esto y debería usarlo UINavigationBar
. Mi aplicación es Instapaper Pro. Muestra solo una barra de herramientas inferior (para ahorrar espacio y maximizar el área de contenido legible), y deseo poner un botón Atrás con forma de flecha izquierda en la parte inferior.
Decirme que no debería necesitar hacer esto no es una respuesta y ciertamente no merece una recompensa.
Respuestas:
Usé el siguiente psd que obtuve de http://www.teehanlax.com/blog/?p=447
http://www.chrisandtennille.com/pictures/backbutton.psd
Luego, acabo de crear una UIView personalizada que uso en la propiedad customView del elemento de la barra de herramientas.
Funciona bien para mi
Editar: como señaló PrairieHippo , maralbjo descubrió que el uso del siguiente código simple hizo el truco (requiere una imagen personalizada en el paquete) que se debe combinar con esta respuesta. Entonces aquí hay un código adicional:
fuente
El metodo Unicode
Creo que es mucho más fácil usar un carácter unicode para hacer el trabajo. Puede mirar a través de las flechas buscando en Google Triángulos Unicode o Flechas Unicode . Comenzando con iOS6, Apple cambió el personaje para que fuera un personaje emoji con un borde. Para deshabilitar el borde agrego el Selector de variación Unicode 0xFE0E .
El bloque de código es solo para la demostración. Funcionaría en cualquier botón que acepte un NSString.
Para obtener una lista completa de caracteres, busque en Google el carácter Unicode y lo que desea. Aquí está la entrada para el triángulo negro que señala a la izquierda .
Resultado
fuente
ADVERTENCIA: Hay informes de que esto no funcionará en iOS 6. Esto podría funcionar solo en versiones anteriores del sistema operativo. Evidentemente, al menos un desarrollador ha rechazado su aplicación por usar este truco (ver los comentarios). Úselo bajo su propio riesgo. Usar una imagen (ver la respuesta anterior) podría ser una solución más segura.
Esto se puede hacer sin agregar sus propios archivos de imagen usando el botón sekr1t tipo 101 para obtener la forma correcta. Para mí, el truco era descubrir que podía usar
initWithCustomView
para crear elBarButtonItem
. Personalmente necesitaba esto para una barra de navegación dinámica en lugar de unatoolbar
, pero lo probé con una barra de herramientas y el código es casi el mismo:Si está haciendo esto en una barra de herramientas, tendrá que ajustar la forma en que configura los elementos, pero eso depende del resto de su código y lo dejo como un ejercicio para el lector. : P Esta muestra funcionó para mí (compilada y ejecutada).
Bla, bla, lee el HIG, no uses características indocumentadas, y todo eso. Solo hay seis tipos de botones compatibles y este no es uno de ellos.
fuente
En primer lugar, debe encontrar una imagen del botón Atrás. Usé una buena aplicación llamada Extractor que extrae todos los gráficos del iPhone. En iOS7 logré recuperar la imagen llamada
UINavigationBarBackIndicatorDefault
y estaba en color negro, ya que necesitaba un tinte rojo, cambio el color a rojo usando Gimp.EDITAR:
Como mencionó btate en su comentario, no hay necesidad de cambiar el color con el editor de imágenes. El siguiente código debería hacer el truco:
Luego creé una vista que contiene una imagen Vista con esa flecha, una etiqueta con el texto personalizado y en la parte superior de la vista tengo un botón con una acción. Luego agregué una animación simple (desvanecimiento y traducción).
El siguiente código simula el comportamiento del botón Atrás, incluida la animación.
EDITAR:
En lugar de agregar el botón, en mi opinión, el mejor enfoque es usar un reconocedor de gestos.
fuente
imageView.tint = [UIColor redColor]
modo de representación de tinte y plantilla en la imagen.imageView.image = [yourImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
No estoy seguro de si esto funcionaría, pero podría intentar crear un
UINavigationController
con la configuración predeterminada para crear el botón, encontrar el botón en la jerarquía de subvista del controlador de navegación, invocarloremoveFromSuperview
, destruir el controlador de navegación y luego agregar el botón como Una subvista de su barra de herramientas. También es posible que necesiteretain
y el botón antes de llamarremoveFromSuperview
(y luegorelease
después de agregarlo como subvista de su barra de herramientas) para evitar que se desasigne durante el proceso.fuente
Para hacer un UIButton con una flecha bastante cerca (no soy diseñador;) a la flecha hacia atrás del sistema iOS 7:
Estándar:
Apple SD Gothic Neo
En Xcode:
Ref. @ StaticVoidMan's respuesta a la flecha hacia atrás en iOS 7
fuente
Si no desea molestarse con los archivos de imagen, la forma de la flecha se puede dibujar en una subclase de UIView con el siguiente código:
donde la vista de flecha es proporcional a un ancho de 6.0 y una altura de 10.0
fuente
Funciona para mi. Utilicé esto cuando tenía más pestañas y luego cabía en la barra de pestañas, y un controlador de vista presionado desde "Más" anuló el leftBarButtonItem en su viewDidLoad.
fuente
Puede encontrar las imágenes de origen extrayéndolas de Other.artwork en UIKit $ {SDKROOT} /System/Library/Frameworks/UIKit.framework/Other.artwork. La comunidad de modding tiene algunas herramientas para extraerlas, aquí . Una vez que extraiga la imagen, puede escribir un código para volver a colorearla según sea necesario y configurarla como la imagen del botón. Si puede enviar o no tal cosa (ya que está incrustando obras de arte derivadas) puede ser un poco incierto, por lo que tal vez desee hablar con un abogado.
fuente
La biblioteca Three20 tiene una manera de hacer esto:
fuente
Descubrí que usar el siguiente código simple hizo el truco (requiere una imagen personalizada en el paquete):
fuente
Esto es lo que terminé haciendo después de buscar entre todas estas soluciones y otras. Utiliza un png estirable extraído de las imágenes de stock de UIKit. De esta manera, puede configurar el texto a lo que sea que le mienta
fuente
Es fácil de hacer con Interface Builder en Xcode 5.x
usar la barra de herramientas y el elemento del botón de barra de la biblioteca de objetos
en la sección Editar imagen del inspector de atributos del botón con la imagen del botón Atrás
¡Hecho!
fuente
Estaba tratando de hacer lo mismo, pero quería que el botón de retroceso estuviera en la barra de navegación. (Realmente necesitaba un botón de retroceso, que haría más que solo retroceder, así que tuve que usar la propiedad leftBarButtonItem). Intenté lo que AndrewS sugirió, pero en la barra de navegación no se vería como debería, ya que el UIButton fue arrojado a un UIBarButtonItem.
Pero encontré una manera de evitar esto. De hecho, solo puse una UIView debajo del UIButton y configuré el customView para el UIBarButtonItem. Aquí está el código, si alguien lo necesita:
fuente
Para crear una imagen para la UIToolbar, haga un png en photoshop y DONDE NUNCA haya CUALQUIER color lo pone en blanco, y donde es alfa = 0, entonces lo deja solo.
El SDK realmente pone el borde alrededor del icono que ha creado y lo vuelve blanco sin que tenga que hacer nada.
Mira, esto es lo que hice en Photoshop para mi botón de avance (obviamente cambiarlo por el botón de retroceso):
http://twitpic.com/1oanv
y así es como apareció en Interface Builder
http://twitpic.com/1oaoa
fuente
Solución SIN usar un png. Basado en esta respuesta SO: Agregar la pequeña flecha al lado derecho de una celda en una celda TableView de iPhone
¡Simplemente volteando el UITableViewCell horizontalmente!
fuente
Swift 5.2 Xcode 11.4
El símbolo de Apple chevron.left ahora permite una solución más elegante para hacer un botón personalizado. He igualado el tamaño y el espacio lo más cerca posible.
Esto se puede implementar como a
UIToolbarItem
, o comoUINavigationItem
Si desea voltear el botón y hacer que la flecha apunte hacia la derecha:
Utilice el símbolo de Apple llamado "chevron.right"
Agregue el siguiente código a la
CustomBackButton
clase:fuente
Si desea evitar dibujarlo usted mismo, puede usar la clase no documentada: UINavigationButton con estilo 1. Esto, por supuesto, podría impedir que su solicitud sea aprobada ... / John
fuente
Bueno, no tiene que tener un botón diferente para cada tamaño, puede usarlo
[UIImage stretchableImageWithLeftCapWidth:topCapHeight:]
, pero lo único que he encontrado son imágenes personalizadas.fuente
Tuve un problema similar y salí de una biblioteca PButton . Y la muestra es el botón Me gusta del botón de navegación hacia atrás, que se puede usar en cualquier lugar como un botón personalizado.
Algo como esto:
fuente
Ejemplo en Swift 3, con un botón anterior y siguiente en la esquina superior derecha.
fuente
Rápido
fuente
Prueba esto. Estoy seguro de que no necesita una imagen de botón de retroceso para crear una.
Eso es todo lo que tienes que hacer :)
fuente
¿Por qué estás haciendo esto? Si desea algo que se parezca a una barra de navegación, use UINavigationBar.
Las barras de herramientas tienen un estilo visual específico asociado con ellas. Las pautas de la interfaz humana para el estado del iPhone:
Luego da varios ejemplos visuales de iconos aproximadamente cuadrados sin texto. Te insto a que sigas a HIG en esto.
fuente