Wie kann ich einem Standard-UIButton ein Abzeichen hinzufügen? [geschlossen]

69

Ist es möglich, einem Standard ein standardmäßig aussehendes Abzeichen hinzuzufügen UIButton?

Was wäre der einfachste Weg, um dies zu erreichen, wenn es nicht semi-nativ unterstützt wird?

Beispielbild:

Eine iPhone UI-Schaltfläche

ohadpr
quelle
Für die Aufzeichnung .. November 2013 scheint das frischeste zuletzt unterstützte Paket zu sein: github.com/jessesquires/JSCustomBadge es funktioniert perfekt ohne Probleme.
Fattie
Nachdem ich diesen Kommentar gerade gepostet hatte, stellte ich fest, dass JSCustomBadge in Xcode5 und nicht in Xcode4 zu funktionieren scheint. "CustomBadge" funktioniert perfekt in Xcode4 github.com/ckteebe/CustomBadge TBC beide scheinen perfekt in Xcode5 zu funktionieren. Hoffe es hilft jemandem.
Fattie
1
Ich habe gerade einen CocoaPod veröffentlicht, der schnell für iOS 8 geschrieben wurde und diese Funktionalität sofort einsatzbereit bietet. Es ist noch ziemlich früh in der Entwicklung, aber ich würde gerne Feedback hören. Überprüfen Sie es auf https://github.com/johncosch/TIPBadgeManager
John Cosch

Antworten:

78

Hier ist eine SEHR SCHÖNE Klasse von Sascha Paulus namens CustomBadge , die mithilfe von Core Graphics benutzerdefinierte Abzeichen erstellt und rendert. Sie sind nur UIView-Unterklassen, daher legen Sie sie wie jede andere UIView-Unterklasse mit ihrem Rahmen an.

Ich habe diese Bibliothek viele Male benutzt und war immer mit den Ergebnissen zufrieden. Flexibel, einfach zu bedienen. Kann es nur empfehlen.

Dan Ray
quelle
7
Es gibt auch eine Kakaofrucht für Custom Badge - cocoadocs.org/docsets/CustomBadge/2.0/Classes/CustomBadge.html
Nate Flink
3

Die von Apple verwendete Klasse ist _UIBadgeView( https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h ), aber diese Klasse ist natürlich privat (beachten Sie den Unterstrich ) und nicht dokumentiert.

Hier ist eine weitere Klasse, die diese Ansicht mit dem gleichen Erscheinungsbild wie die von Apple implementiert und es Ihnen gleichzeitig ermöglicht, sie anzupassen: https://github.com/JaviSoto/JSBadgeView . Das Tolle an diesem ist, dass Sie das Abzeichen automatisch relativ zu einer anderen Ansicht in einer seiner Ecken positionieren können.

Javier Soto
quelle
2

Wir haben eine Abzeichenansicht in Nimbus, die super einfach zu bedienen und gut dokumentiert ist:

NimbusBadge

federlos
quelle
1

Ich weiß nicht, wie das sofort gemacht wird, und ich bezweifle ehrlich, dass Apple das in das SDK eingebaut hat.

Auf jeden Fall können Sie eine benutzerdefinierte Ansicht mit einer Schaltfläche erstellen, den Hintergrund des Ausweises als UIImageView hinzufügen und eine Beschriftung darauf platzieren, um die Anzahl der Ausweise zu speichern.

Dies ist eine schnelle Lösung. Es ist möglicherweise besser, eine benutzerdefinierte Unterklasse zu erstellen UIButtonund Ihre Abzeichen als Unteransicht hinzuzufügen

Björn Kaiser
quelle
4
Sie nicht Unterklasse UIButton - es ist nicht gut funktioniert, das heißt Sie nur eine Bequemlichkeit Klassenmethode für den Bau haben. Außerdem ist die "Container" -Ansicht für die Schaltfläche nicht erforderlich.
Eiko
1

Ich würde einen ähnlichen Weg wie @ Björn Kaiser gehen: Verwenden Sie die Schaltfläche nach Ihren Wünschen und fügen Sie dann eine benutzerdefinierte Ansicht mit diesem Abzeichen als Unteransicht hinzu - ich habe es geschafft und es funktioniert gut.

Die Ansicht können Sie nach Belieben zeichnen. Sie können es manuell zeichnen oder CoreAnimation verwenden und es den Hauptteil bilden lassen, dh theBadge.layer.cornerRadius = ...;ihm eine runde Form geben, den Text / die Zahl einzeichnen drawRect:oder als Beschriftung hinzufügen usw.

Eiko
quelle