Eu adoraria criar um botão "voltar" no painel da seta esquerda em um UIToolbar
.
Até onde eu sei, a única maneira de obter uma dessas UINavigationController
opções é deixar as configurações padrão e usar uma para o item da barra esquerda. Mas não há como encontrar um para criar um UIBarButtonItem
, então não posso fazer um em um padrão UIToolbar
, mesmo que sejam muito parecidos com UINavigationBar
s.
Eu poderia criá-lo manualmente com imagens de botão, mas não consigo encontrar as imagens de origem em nenhum lugar. Eles têm bordas de canal alfa, portanto, captura de tela e corte não terão resultados muito versáteis.
Alguma idéia além da captura de tela para todos os tamanhos e esquemas de cores que pretendo usar?
Atualização: PARE DE evitar a pergunta e sugerir que eu não deveria estar perguntando isso e deveria estar usando UINavigationBar
. Meu aplicativo é o Instapaper Pro. Ele mostra apenas uma barra de ferramentas inferior (para economizar espaço e maximizar a área de conteúdo legível) e desejo colocar um botão Voltar em forma de seta esquerda na parte inferior.
Dizer-me que não deveria fazer isso não é uma resposta e certamente não merece uma recompensa.
Respostas:
Usei o seguinte psd derivado de http://www.teehanlax.com/blog/?p=447
http://www.chrisandtennille.com/pictures/backbutton.psd
Acabei de criar uma UIView personalizada que uso na propriedade customView do item da barra de ferramentas.
Funciona bem para mim.
Edit: Como apontado por PrairieHippo , maralbjo descobriu que usando o seguinte código simples, o truque (requer imagem personalizada no pacote) deve ser combinado com esta resposta. Então, aqui está um código adicional:
fonte
O método Unicode
Eu acho que é muito mais fácil usar apenas um caractere unicode para fazer o trabalho. Você pode examinar as setas pesquisando no triângulo Unicode ou nas setas Unicode . A partir do iOS6, a Apple alterou o caractere para um emoji com uma borda. Para desativar a borda, adiciono o seletor de variação Unicode 0xFE0E .
O bloco de código é apenas para a demonstração. Funcionaria em qualquer botão que aceite um NSString.
Para obter uma lista completa de caracteres, pesquise no Google caracteres Unicode e o que você deseja. Aqui está a entrada para o triângulo preto que aponta para a esquerda .
Resultado
fonte
AVISO: Há relatos de que isso não funcionará no iOS 6. Isso pode funcionar apenas em versões mais antigas do sistema operacional. Evidentemente, pelo menos um desenvolvedor teve seu aplicativo rejeitado por usar esse truque (veja os comentários). Use por sua conta e risco. Usar uma imagem (veja a resposta acima) pode ser uma solução mais segura.
Isso pode ser feito sem adicionar seus próprios arquivos de imagem usando o botão sekr1t tipo 101 para obter a forma correta. Para mim, o truque foi descobrir que eu poderia usar
initWithCustomView
para criar oBarButtonItem
. Pessoalmente, eu precisava disso para uma barra de navegação dinâmica, e não para umatoolbar
, mas testei-a com uma barra de ferramentas e o código é quase o mesmo:Se você estiver fazendo isso em uma barra de ferramentas, precisará ajustar a maneira como define os itens, mas isso depende do restante do seu código e deixo isso como um exercício para o leitor. : P Este exemplo funcionou para mim (compilado e executado).
Blá, blá, leia o HIG, não use recursos não documentados e tudo mais. Existem apenas seis tipos de botões suportados e este não é um deles.
fonte
Antes de tudo, você precisa encontrar uma imagem do botão Voltar. Eu usei um bom aplicativo chamado Extractor que extrai todos os gráficos do iPhone. No iOS7 , consegui recuperar a imagem chamada
UINavigationBarBackIndicatorDefault
e estava na cor preta, pois precisava de uma tonalidade vermelha e altereia cor para vermelho usando o Gimp.EDITAR:
Como foi mencionado por btate em seu comentário, não há necessidade de alterar a cor com o editor de imagens. O código a seguir deve fazer o truque:
Em seguida, criei uma visualização que contém um imageView com essa seta, um rótulo com o texto personalizado e, na parte superior da visualização, tenho um botão com uma ação. Então eu adicionei uma animação simples (desbotamento e tradução).
O código a seguir simula o comportamento do botão Voltar, incluindo animação.
EDITAR:
Em vez de adicionar o botão, na minha opinião, a melhor abordagem é usar um reconhecedor de gestos.
fonte
imageView.tint = [UIColor redColor]
modo de renderização de tonalidade e modelo na imagem.imageView.image = [yourImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
Não tenho certeza se isso funcionaria, mas você pode tentar criar um
UINavigationController
com as configurações padrão para criar o botão, encontrar o botão na hierarquia de subvisões do controlador de navegação, chamáremoveFromSuperview
-lo, destruir o controlador de navegação e adicionar o botão como uma subvisão da sua barra de ferramentas. Você também pode precisarretain
e o botão antes de ligarremoveFromSuperview
(erelease
depois adicioná-lo como subview da barra de ferramentas) para evitar que seja desalocado durante o processo.fonte
Para fazer um UIButton com uma seta bem próximo (não sou designer;) da seta para trás do sistema iOS 7:
Padrão:
Apple SD Gothic Neo
No Xcode:
Ref da resposta de staticVoidMan da seta Back-like no iOS 7
fonte
Se você não quiser se preocupar com arquivos de imagem, a forma da seta pode ser desenhada em uma subclasse UIView com o seguinte código:
onde a vista em seta é proporcional a uma largura de 6,0 e uma altura de 10,0
fonte
Funciona para mim. Eu usei isso quando eu tinha mais guias, então poderia caber na barra de guias, e um controlador de exibição pressionado a partir do "Mais" substituiu o leftBarButtonItem em seu viewDidLoad.
fonte
Você pode encontrar as imagens de origem extraindo-as de Other.artwork no UIKit $ {SDKROOT} /System/Library/Frameworks/UIKit.framework/Other.artwork. A comunidade modding tem algumas ferramentas para extraí-las, aqui . Depois de extrair a imagem, você pode escrever um código para recolori-lo conforme necessário e defini-lo como a imagem do botão. Se você pode ou não enviar uma coisa dessas (já que está incorporando obras de arte derivadas) pode ser um pouco arriscado, então talvez você queira conversar com um advogado.
fonte
A biblioteca Three20 tem uma maneira de fazer isso:
fonte
Eu descobri que usando o código simples a seguir, o truque (requer imagem personalizada no pacote):
fonte
Eis o que acabei fazendo depois de pesquisar em todas essas soluções e outras. Ele usa pngs extensíveis extraídos das imagens de ações do UIKit. Dessa forma, você pode definir o texto como preferir
fonte
É fácil fazer isso com o Interface Builder no Xcode 5.x
usar barra de ferramentas e item de botão de barra da biblioteca de objetos
Inspetor de Atributos do botão editar seção Imagem com a imagem do botão Voltar
Feito!
fonte
Eu estava tentando fazer a mesma coisa, mas queria que o botão Voltar estivesse na barra de navegação. (Na verdade, eu precisava de um botão Voltar, que faria mais do que apenas voltar, então tive que usar a propriedade leftBarButtonItem). Eu tentei o que o AndrewS sugeriu, mas na barra de navegação não teria a aparência que deveria, pois o UIButton era meio que convertido para um UIBarButtonItem.
Mas eu encontrei uma maneira de contornar isso. Na verdade, basta colocar uma UIView sob o UIButton e definir o customView para o UIBarButtonItem. Aqui está o código, se alguém precisar:
fonte
Para criar uma imagem para a barra UITool, faça um png no photoshop e ONDE SEMPRE ALGUMA cor, ela a coloca em branco e, onde é alfa = 0, deixa-a em paz.
Na verdade, o SDK coloca a borda ao redor do ícone que você criou e o torna branco sem que você precise fazer nada.
Veja, foi o que fiz no Photoshop para o meu botão de avanço (obviamente troque-o pelo botão de retorno):
http://twitpic.com/1oanv
e foi assim que apareceu no Interface Builder
http://twitpic.com/1oaoa
fonte
Solução SEM usar um png. Com base nesta resposta SO: Adicionando a pequena seta ao lado direito de uma célula em uma célula do iPhone TableView
Basta virar o UITableViewCell horizontalmente!
fonte
Swift 5.2 Xcode 11.4
O símbolo Apple chevron.left agora permite uma solução mais elegante para criar um botão personalizado. Combinei o tamanho e o espaçamento o mais próximo possível.
Isso pode ser implementado como um
UIToolbarItem
, ou umUINavigationItem
Se você deseja apertar o botão e ter a seta apontando para a direita:
Use o símbolo da Apple chamado "chevron.right"
Adicione o seguinte código à
CustomBackButton
classe:fonte
Se você quiser evitar desenhá-lo você mesmo, poderá usar a classe não documentada: UINavigationButton com estilo 1. Isso pode, é claro, impedir que seu aplicativo seja aprovado ... / John
fonte
Bem, você não precisa ter um botão diferente para cada tamanho, pode usar
[UIImage stretchableImageWithLeftCapWidth:topCapHeight:]
, mas a única coisa que encontrei foram as imagens personalizadas.fonte
Eu tive um problema semelhante e saí de uma biblioteca PButton . E a amostra é o botão de navegação traseira como botão, que pode ser usado em qualquer lugar, como um botão personalizado.
Algo assim:
fonte
Exemplo no Swift 3, com um botão anterior e um próximo no canto superior direito.
fonte
Rápido
fonte
Tente isso. Tenho certeza de que você não precisa de uma imagem do botão Voltar para criar uma dessas.
É tudo o que você precisa fazer :)
fonte
Por que você está fazendo isso? Se você deseja algo parecido com uma barra de navegação, use UINavigationBar.
As barras de ferramentas têm um estilo visual específico associado a elas. As diretrizes da interface humana para o iPhone declaram:
Em seguida, fornece vários exemplos visuais de ícones aproximadamente quadrados sem texto. Exorto-vos a seguir o HIG sobre isso.
fonte