Как добавить значок в стандартный UIButton?

Можно ли добавить стандартный значок к стандарту UIButton?

Если это не поддерживается полулинейно, каким будет самый простой способ достичь этого?

Пример изображения:

An iPhone UI button

Ответ 1

Здесь класс ОЧЕНЬ НИЗКО Sascha Paulus называется CustomBadge, который создает и отображает пользовательские значки с использованием Core Graphics. Это просто подклассы UIView, поэтому вы их используете с помощью своего фрейма, как и любой другой подкласс UIView.

Я использовал эту библиотеку много раз и всегда был доволен результатами. Гибкий, простой в использовании. Полностью рекомендую.

Ответ 2

Здесь вы можете проверить несколько параметров: Значки CocoaControls

Ответ 3

Класс, который использует Apple, это _UIBadgeView (https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h), но, конечно, этот класс является закрытым (обратите внимание на подчеркивание) и не документированы.

Вот еще один класс, который реализует это представление с таким же внешним видом и ощущением, как Apple, а также позволяет настроить его: https://github.com/JaviSoto/JSBadgeView. Самое замечательное в этом заключается в том, что он позволяет автоматически позиционировать значок по отношению к другому виду в одном из его углов.

Ответ 4

У нас есть значок в Nimbus, который очень прост в использовании и хорошо документирован:

NimbusBadge

Ответ 5

Я не знаю, как это делается из коробки, и я честно сомневаюсь, что Apple построила это в SDK.

В любом случае вы можете создать собственное представление с помощью кнопки на нем, добавить фон значка как UIImageView и поместить на нем метку, чтобы удерживать счетчик значков.

Это быстрое решение, возможно, было бы лучше создать пользовательский подкласс UIButton и добавить свой материал значка в качестве подвью

Ответ 6

Я бы поступил так же, как @Björn Kaiser: используйте кнопку по своему усмотрению, а затем добавьте пользовательский вид с этим значком в качестве подпрограммы к нему - я сделал это, и он работает хорошо.

Что касается вида, вы можете нарисовать его по своему усмотрению. Вы можете нарисовать его вручную или использовать CoreAnimation и позволить ему сделать основную часть, т.е. theBadge.layer.cornerRadius = ...;, чтобы придать ей круглую форму, нарисуйте текст/номер в drawRect: или добавьте его как метку и т.д.