Можно ли добавить стандартный значок к стандарту UIButton
?
Если это не поддерживается полулинейно, каким будет самый простой способ достичь этого?
Пример изображения:
Можно ли добавить стандартный значок к стандарту UIButton
?
Если это не поддерживается полулинейно, каким будет самый простой способ достичь этого?
Пример изображения:
Здесь класс ОЧЕНЬ НИЗКО Sascha Paulus называется 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:
или добавьте его как метку и т.д.