Можно ли добавить стандартный значок к стандартному UIButton
?
Если он не поддерживается полунативно, каким будет самый простой способ добиться этого?
Пример изображения:
Можно ли добавить стандартный значок к стандартному UIButton
?
Если он не поддерживается полунативно, каким будет самый простой способ добиться этого?
Пример изображения:
Вот ОЧЕНЬ ХОРОШИЙ класс Саши Паулюса под названием CustomBadge, который создает и отображает пользовательские значки с помощью Core Graphics. Это просто подклассы UIView, поэтому вы размещаете их, используя их фрейм, как и любой другой подкласс UIView.
Я использовал эту библиотеку много раз и всегда был доволен результатами. Гибкий, простой в использовании. Полностью рекомендую это.
Вы можете проверить несколько вариантов здесь: Значки CocoaControls
Apple использует класс _UIBadgeView
(https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h), но, конечно, этот класс является закрытым (обратите внимание на подчеркивание) и не документирован. .
Вот еще один класс, который реализует это представление с тем же внешним видом, что и у Apple, но при этом позволяет настраивать его: https://github.com/JaviSoto/JSBadgeView. Самое замечательное в этом то, что он позволяет автоматически размещать значок относительно другого вида, в одном из его углов.
У нас есть вид значков в Nimbus, который очень прост в использовании и хорошо документирован:
Я не знаю, как это делается из коробки, и я искренне сомневаюсь, что Apple встроила это в SDK.
В любом случае, вы можете создать собственное представление с кнопкой на нем, добавить фон значка в качестве UIImageView и поместить на него метку, чтобы сохранить количество значков.
Это быстрое решение, может быть лучше создать собственный подкласс UIButton
и добавить свои значки в качестве подпредставления.
Я бы пошел по тому же пути, что и @Björn Kaiser: используйте кнопку, как вам нравится, а затем добавьте к ней собственное представление с этим значком в качестве подпредставления - я сделал это, и это работает хорошо.
Что касается вида, то его можно нарисовать как угодно. Вы можете нарисовать его вручную или использовать CoreAnimation и позволить ему сделать основную часть, то есть theBadge.layer.cornerRadius = ...;
, чтобы придать ему круглую форму, нарисовать текст/число в drawRect:
или добавить его в качестве метки и т. д.