Как я могу добавить значок в стандартный Uibutton? [закрыто
-
12-10-2019 - |
Вопрос
Можно ли добавить стандартный значок в стандарт UIButton
?
Если он не поддерживается полунамолевым, что было бы самым простым способом достижения этого?
Пример изображения:
Решение
Вот очень хороший класс Саши Паулюс под названием Custombadge, Это строит и отображает пользовательские значки с использованием основной графики. Это просто подклассы Uiview, поэтому вы издаете их, используя их кадр, как и любой другой подкласс Uiview.
Я использовал эту библиотеку много раз и всегда был доволен результатами. Гибкий, простой в использовании. Полностью рекомендую это.
Другие советы
Вы можете проверить несколько вариантов здесь: Значки Cocoacontrols
Класс, который использует Apple _UIBadgeView
(https://github.com/nst/ios-runtime-derers/blob/master/frameworks/uikit.framework/_uibadgeview.h), но, конечно, этот класс является частным (обратите внимание на подчеркивание) и не задокументирован.
Вот еще один класс, который реализует этот взгляд с тем же внешним видом, как Apple, а также позволяет вам настроить: https://github.com/javisoto/jsbadgeview. Анкет Самое замечательное в этом заключается в том, что он позволяет вам автоматически позиционировать значок относительно другого представления в одном из его угла.
У нас есть представление о значке в Нимбусе, который очень прост в использовании и хорошо документирован:
Я не знаю, как это делается из коробки, и я честно сомневаюсь, что Apple встроила это в SDK.
В любом случае, вы можете создать пользовательский вид с кнопкой на кнопке, добавить фон значка в качестве Uiimageview и поместить на него метку, чтобы удерживать количество значков.
Это быстрое решение, может быть лучше создать пользовательский подкласс UIButton
И добавьте свой значок в качестве подвиги
Я бы пошел так же, как @Björn Kaiser: используйте кнопку, как вам это нравится, а затем добавил бы пользовательский вид с этим значком в качестве подвеса - я сделал это, и он работает хорошо.
Что касается вида, вы можете нарисовать его так, как хотите. Вы можете нарисовать его вручную или использовать кореанимацию и позволить ей сделать основную часть, т.е. theBadge.layer.cornerRadius = ...;
Чтобы придать ему круглую форму, нарисуйте текст/номер в drawRect:
или добавьте его в качестве ярлыка и т. Д.