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

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

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

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

Кнопка пользовательского интерфейса iPhone


person ohadpr    schedule 18.01.2011    source источник
comment
Для справки. Ноябрь 2013 года, самый свежий из последних поддерживаемых пакетов: github.com/jessesquires/JSCustomBadge работает без проблем.   -  person Fattie    schedule 21.11.2013
comment
Только что опубликовав этот комментарий, я понял, что JCustomBadge работает в Xcode5, а не в Xcode4. CustomBadge отлично работает в Xcode4 github.com/ckteebe/CustomBadge TBC, похоже, отлично работает в Xcode5. Надеюсь, это поможет кому-то.   -  person Fattie    schedule 21.11.2013
comment
Я только что выпустил CocoaPod, написанный на Swift для iOS 8, который предоставляет эту функциональность практически из коробки. Это все еще довольно рано в разработке, но я хотел бы услышать отзывы. Проверьте это на https://github.com/johncosch/TIPBadgeManager.   -  person John Cosch    schedule 01.07.2015


Ответы (6)


Вот ОЧЕНЬ ХОРОШИЙ класс Саши Паулюса под названием CustomBadge, который создает и отображает пользовательские значки с помощью Core Graphics. Это просто подклассы UIView, поэтому вы размещаете их, используя их фрейм, как и любой другой подкласс UIView.

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

person Dan Ray    schedule 18.01.2011
comment
Существует также стручок какао для пользовательского значка — cocoadocs.org/docsets/CustomBadge/ 2.0/Классы/CustomBadge.html - person Nate Flink; 12.08.2013

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

person Carlos Ricardo    schedule 20.03.2013

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

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

person Javier Soto    schedule 09.09.2013

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

Значок Nimbus

person featherless    schedule 20.06.2012

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

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

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

person Björn Kaiser    schedule 18.01.2011
comment
Не делайте не подкласс UIButton - это плохо работает, т.е. у вас есть только метод удобного класса для построения. Кроме того, нет необходимости в представлении контейнера для кнопки. - person Eiko; 18.01.2011

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

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

person Eiko    schedule 18.01.2011