8 Stimmen

Wie kann man nur ein Wort in einem UILabel fett machen?

Es ist einfach, ein einzelnes Label mit dem exakt gleichen Text anzuzeigen, aber was passiert, wenn du ein Wort fett anzeigen möchtest?

Beispiel:

All deine Basen gehören uns.

7voto

Jeremy W. Sherman Punkte 35413

UILabel selbst kann kein Label mit verschiedenen Attributen/Schriftarten innerhalb des Textes zeichnen. Aber Core Text kann das. Sie können eine Unterklasse von UILabel erstellen, die eine attributierte Zeichenkette umschließt und Core Text verwendet, um sie zu zeichnen. Sie können das Zeichnen so behandeln wie in diesem Beispielcode aus dem Core Text Programmierhandbuch:

// Erstellen Sie Ihre attributierte Zeichenkette und dann...
CTLineRef line = CTLineCreateWithAttributedString(attrString);

// Setzen Sie die Textposition und zeichnen Sie die Zeile in den Grafikkontext
CGContextSetTextPosition(context, 10.0, 10.0);
CTLineDraw(line, context);
CFRelease(line);

1voto

Evan Mulawski Punkte 53325

Leider ist dies derzeit nicht möglich. Sie könnten jedoch UILabel untergeordnet machen und diese Funktionalität einschließen.

Eine andere Möglichkeit wäre die Verwendung eines UIWebView, dies erfordert jedoch die Verwendung von HTML-Tags und der loadHTML: Methode.

1voto

westsider Punkte 4959

Wie Evan Mulawski geschrieben hat, wird Ihnen UILabel nicht geben, was Sie wollen. In dieser Hinsicht auch nicht UITextField noch UITextView.

Ein anderer Ansatz wäre, UIView zu unterklassifizieren und eine -drawRect: Methode zu schreiben, die das tut, was Sie wollen. Du könntest mal schauen auf

  • CGContextShowTextAtPoint
  • [NSString drawAtPoint:withFont:]
  • [NSString sizeWithFont:]

Wenn Sie nicht viele Zeilenumbrüche und Umbrüche benötigen, könnten Sie wahrscheinlich etwas relativ einfach gestalten.

UIWebView wäre wahrscheinlich schneller, aber es scheint wie ein großer Overhead für etwas so einfaches wie ein gestyltes Label.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X