Как я могу добавить значок к стандартному UIButton? [закрытый]


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

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

изображение:

6 68

6 ответов:

вот очень хороший класс Саши Паулюса называется CustomBadge, который строит и отображает пользовательские значки с использованием основной графики. Они просто подклассы 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. Самое замечательное в этом то, что он позволяет вам расположите значок относительно другого вида автоматически, в одном из его углов.

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

NimbusBadge

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

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

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

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

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