Я хотел бы создать кнопку "назад" влево-стрелка в UIToolbar
.
Насколько я могу судить, единственный способ получить один из них - оставить UINavigationController
настройки по умолчанию, и он использует один для элемента левой панели. Но я не могу найти способ создать его как a UIBarButtonItem
, так что я не могу сделать его в стандарте UIToolbar
, даже если они очень похожи на UINavigationBar
s.
Я мог бы создать его вручную с помощью изображений кнопок, но нигде не могу найти исходные изображения. У них есть края альфа-канала, поэтому скриншоты и обрезка не дадут очень разносторонних результатов.
Любые идеи помимо скриншотов для каждого размера и цветовой схемы, которую я собираюсь использовать?
Обновление: ПОЖАЛУЙСТА, ПРЕКРАТИТЕ Уклонение от вопроса и предложение, чтобы я не задавал этот вопрос и должен был использовать UINavigationBar
. Мое приложение - Instapaper Pro. Он показывает только нижнюю панель инструментов (для экономии места и максимизации читаемой области содержимого), и я хочу поместить кнопку Back в форме стрелки влево внизу.
Сказать, что мне не нужно этого делать, не является ответом и, конечно, не заслуживает награды.
Ответы:
Я использовал следующий PSD, полученный из http://www.teehanlax.com/blog/?p=447.
http://www.chrisandtennille.com/pictures/backbutton.psd
Затем я просто создал пользовательский UIView, который я использую в свойстве customView элемента панели инструментов.
Хорошо работает для меня.
Редактировать: как указано PrairieHippo , maralbjo обнаружили , что с помощью следующих, простой код сделал трюк (требуется собственное изображение в комплекте) должен быть объединен с этим ответом. Итак, вот дополнительный код:
источник
Метод Юникода
Я думаю, что гораздо проще просто использовать Unicode-символ для выполнения работы. Вы можете просматривать стрелки прибегая к помощи либо Unicode Треугольники или Unicode стрелки . Начиная с iOS6, Apple сменила персонажа на смайлика с рамкой. Чтобы отключить границу, я добавляю 0xFE0E Unicode Variation Selector .
Блок кода только для демонстрации. Это будет работать в любой кнопке, которая принимает строку NSString.
Чтобы получить полный список символов, поищите в Google символы Unicode и то, что вы хотите. Вот запись для черного левого треугольника .
результат
источник
ВНИМАНИЕ: Есть сообщения, что это не будет работать на iOS 6. Это может работать только на старых версиях ОС. Очевидно, что по крайней мере у одного разработчика было отклонено приложение для использования этого трюка (см. Комментарии). Используйте на свой риск. Использование изображения (см. Ответ выше) может быть более безопасным решением.
Это можно сделать без добавления собственных файлов изображений с помощью кнопки sekr1t типа 101, чтобы получить правильную форму. Для меня фокус заключался в том, чтобы выяснить, что я могу использовать
initWithCustomView
для созданияBarButtonItem
. Лично мне это нужно для динамической панели навигации, а не дляtoolbar
, но я протестировал это с панелью инструментов, и код почти такой же:Если вы делаете это на панели инструментов, вам нужно настроить параметры, но это зависит от остальной части вашего кода, и я оставлю это в качестве упражнения для читателя. : P Этот образец работал для меня (скомпилировано и запущено).
Бла-бла, читайте HIG, не используйте недокументированные функции и все такое. Есть только шесть поддерживаемых типов кнопок, и это не один из них.
источник
Прежде всего вы должны найти изображение кнопки «Назад». Я использовал красивое приложение под названием Extractor, которое извлекает всю графику с iPhone. В iOS7 мне удалось получить названное изображение,
UINavigationBarBackIndicatorDefault
и оно было в черном цвете, так как мне нужен был красный оттенок,я меняю цвет на красный с помощью Gimp.РЕДАКТИРОВАТЬ:
Как было упомянуто btate в его комментарии, нет необходимости менять цвет с помощью графического редактора. Следующий код должен сделать трюк:
Затем я создал вид, который содержит изображение с этой стрелкой, метку с пользовательским текстом, а в верхней части окна у меня есть кнопка с действием. Затем я добавил простую анимацию (выцветание и перевод).
Следующий код имитирует поведение кнопки «Назад», включая анимацию.
РЕДАКТИРОВАТЬ:
Вместо добавления кнопки, на мой взгляд, лучше использовать распознаватель жестов.
источник
imageView.tint = [UIColor redColor]
и режим рендеринга шаблона на изображении.imageView.image = [yourImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
Я не уверен, что это сработает, но вы можете попробовать создать
UINavigationController
с настройками по умолчанию, чтобы создать кнопку, найти кнопку в иерархии подпредставлений контроллера навигации, вызватьremoveFromSuperview
ее, уничтожить контроллер навигации, а затем добавить кнопку как подпредставление вашей панели инструментов. Вам также может понадобитьсяretain
кнопка и перед вызовомremoveFromSuperview
(а затемrelease
и после добавления ее в качестве подпредставления панели инструментов), чтобы избежать ее освобождения во время процесса.источник
Чтобы сделать UIB-кнопку со стрелкой довольно близко (я не дизайнер;) к стрелке назад системы iOS 7:
Стандарт:
Apple SD Готический Нео
В Xcode:
Ref @ staticVoidMan ответ на Back-like arrow на iOS 7
источник
Если вы не хотите беспокоиться о файлах изображений, форму стрелки можно нарисовать в подклассе UIView со следующим кодом:
где вид стрелки пропорционален ширине 6,0 и высоте 10,0
источник
Работает для меня. Я использовал это, когда у меня было больше вкладок, чем они могли поместиться на панели вкладок, и контроллер представления, выдвинутый из «More», перекрывал leftBarButtonItem в его viewDidLoad.
источник
Вы можете найти исходные изображения, извлекая их из Other.artwork в UIKit $ {SDKROOT} /System/Library/Frameworks/UIKit.framework/Other.artwork. У сообщества моддинга есть несколько инструментов для их извлечения, здесь . После того, как вы извлечете изображение, вы можете написать некоторый код, чтобы перекрасить его по мере необходимости и установить в качестве изображения кнопки. Возможно ли, что вы действительно отправите такую вещь (поскольку вы встраиваете производное произведение искусства), может быть немного рискованно, поэтому, возможно, вы захотите поговорить с юристом.
источник
В библиотеке Three20 есть способ сделать это:
источник
Я обнаружил, что с помощью следующего простого кода добился цели (требуется пользовательское изображение в комплекте):
источник
Вот что я в итоге сделал после поиска всех этих и других решений. Он использует растягиваемый PNG, извлеченный из изображений UIKit. Таким образом, вы можете установить текст, что вы любите
источник
Это легко сделать с помощью Interface Builder в Xcode 5.x
использовать панель инструментов и элемент панели кнопок из библиотеки объектов
в инспекторе Атрибутов кнопки отредактируйте раздел Изображение с вашим изображением кнопки Назад
Готово!
источник
Я пытался сделать то же самое, но я хотел, чтобы кнопка «Назад» была на панели навигации. (На самом деле мне нужна была кнопка «Назад», которая делала бы больше, чем просто возвращался назад, поэтому мне пришлось использовать свойство leftBarButtonItem). Я попробовал то, что предложил AndrewS, но в навигационной панели это не выглядело бы так, как должно, так как UIButton был отчасти приведен к UIBarButtonItem.
Но я нашел способ обойти это. На самом деле я просто помещаю UIView под UIButton и устанавливаю customView для UIBarButtonItem. Вот код, если кому-то это нужно:
источник
Чтобы создать изображение для панели инструментов UIToolbar, создайте png в фотошопе, и ГДЕ там, где есть ЛЮБОЙ цвет, он помещает его в белый цвет, а где он равен альфа = 0, то оставляет его в покое.
SDK на самом деле помещает границу вокруг созданного вами значка и делает его белым, без необходимости что-либо делать.
Видите, это то, что я сделал в Photoshop для кнопки «вперед» (очевидно, поменяйте местами кнопку «назад»):
http://twitpic.com/1oanv
и вот как он появился в Интерфейсном Разработчике
http://twitpic.com/1oaoa
источник
Решение без использования PNG. Основываясь на этом SO ответе: добавление маленькой стрелки к правой стороне ячейки в ячейке iPhone TableView
Просто переверните UITableViewCell по горизонтали!
источник
Swift 5.2 Xcode 11.4
Apple Symbol chevron.left теперь позволяет более элегантное решение сделать пользовательскую кнопку. Я подобрал размер и расстояние как можно ближе.
Это может быть реализовано либо как
UIToolbarItem
, либо какUINavigationItem
Если вы хотите щелкнуть кнопкой и стрелка указывает вправо:
Используйте Apple Symbol с именем "chevron.right"
Добавьте следующий код в
CustomBackButton
класс:источник
Если вы хотите избежать рисования самостоятельно, вы можете использовать недокументированный класс: UINavigationButton со стилем 1. Это, конечно, может помешать утверждению вашего приложения ... / Джон
источник
Ну, вам не нужно иметь разные кнопки для каждого размера, вы можете использовать
[UIImage stretchableImageWithLeftCapWidth:topCapHeight:]
, но единственное, что я нашел, это пользовательские изображения.источник
У меня была похожая проблема, и вышла одна библиотека PButton . И пример - кнопка, похожая на кнопку обратной навигации, которую можно использовать в любом месте, как настраиваемую кнопку.
Что-то вроде этого:
источник
Пример в Swift 3, с предыдущей и следующей кнопкой в правом верхнем углу.
источник
стриж
источник
Попробуй это. Я уверен, что вам не нужно изображение кнопки назад, чтобы создать один такой.
Это все, что вам нужно сделать :)
источник
Почему вы это делаете? Если вы хотите что-то похожее на панель навигации, используйте UINavigationBar.
Панели инструментов имеют определенный визуальный стиль, связанный с ними. Руководство по интерфейсу пользователя для состояния iPhone:
Затем он дает несколько наглядных примеров примерно квадратных значков без текста. Я призываю вас следовать HIG по этому вопросу.
источник