Ich habe mich gefragt, ob es eine Standardmethode in iOS gibt, um das nummerierte Blasensymbol für ungelesene Nachrichten zu erzeugen, wie es in Mail für iphone und Mac verwendet wird.
Ich spreche nicht über die roten Punkte auf dem Anwendungsposten, die mit badgevalue gemacht werden, sondern über die blaue Blase neben den Postfächern.
Natürlich kann man das manuell mit Core Graphics machen, aber es ist schwieriger, die Dimensionen und die Farbe der Standard-Mails anzupassen, die in Mail etc. verwendet werden.
Hier sind drei Möglichkeiten, dies in der Reihenfolge der Schwierigkeit zu tun.
Screenshot Ihre E-Mail-App von Ihrem iPhone, senden Sie das Bild in Photoshop, extrahieren Sie den blauen Punkt und verwenden Sie es als Bild in Ihrer App. Um es in einer Tabellenansichtszelle zu verwenden, setzen Sie einfach imageView.image = [UIImage imageName: @ "blueDot.png"];
Wie # 1, außer dass das Bild als Graustufen gespeichert wird. Auf diese Weise können Sie Quartz verwenden und Ihre eigenen Farben darüber legen. so können Sie diesen Punkt jede mögliche Farbe machen, die Sie wünschen. Sehr cooles Zeug.
Verwende Quartz, um die ganze Sache zu zeichnen. Es ist wirklich nicht so schwer. Lassen Sie es mich wissen, wenn Sie einen Code dafür möchten.
OK, verdrehen Sie meinen Arm ... hier ist der Code, um Ihre eigene Gradientenkugel ... aus Quarz zu zeichnen.
Machen Sie eine Klasse, die von UIView erbt. füge den folgenden Code hinzu
%Vor% Wenn Sie eine grafische Ressource von iOS verwenden möchten, können Sie sie mithilfe des UIKit-Artwork-Extractor Werkzeug. Extrahiere alles auf den Desktop und finde den gewünschten. Zum Beispiel heißt das rote Abzeichen für Benachrichtigungen SBBadgeBG.png
. Ich weiß nicht, welchen du meinst, also such es selbst: P
Dies ist, was ich getan habe, um ein Abzeichen zu verwenden, das Verfahren ist genau das gleiche, um eine Blase in einer Unteransicht Ihrer Tabelle zu zeigen:
%Vor% und überschreiben Sie dann die Methode drawRect:
Ihrer Ansicht, um das Abzeichen und die darin enthaltenen Zahlen zu malen: