Wie man den Hintergrund cornerRadius von NSString auf iOS7 einstellt

7

Ich möchte den Hintergrund cornerRadius von NSString auf iOS7 einstellen. Aber NSString hat keinen Layer ...

Bitte sagen Sie mir, wie man den Hintergrund cornerRadius von NSString auf iOS7 einstellt?

Beispiel

    
user3323951 18.02.2014, 14:55
quelle

6 Antworten

13

Sie können dies tun, indem Sie UITextView mit einer Unterklasse von NSLayoutManager verwenden, die -fillBackgroundRectArray:count:forCharacterRange:color: überschreibt. Nur ein kleines Beispiel dafür:

%Vor%

    
Emmanuel 18.02.2014, 17:44
quelle
5

Emmanuels Code in swift:

%Vor%     
João Nunes 14.01.2016 15:19
quelle
3

Als Ergänzung zu @ Emmanuels Lösung,

hinzufügen %Vor%

wird es viel besser aussehen lassen.

    
Gian Franco Zabarino 08.07.2015 22:08
quelle
1

Update auf Swift 3.1 Emmanuels Code in swift wurde auf Version 3.1 aktualisiert.

%Vor%     
Keith Saft 01.06.2017 09:40
quelle
0

NSString hat das nicht. NSAttributedString verfügt über eine backgroundColor-Eigenschaft, die verwendet werden kann, aber ohne benutzerdefiniertes Rendering können Sie keinen Eckenradius für die Auswahl von Textfragmenten festlegen.

Sie müssen also eine benutzerdefinierte UIView schreiben, um Ihren Text zu rendern

    
Daij-Djan 18.02.2014 15:00
quelle
-1

Ein NSString definiert nur eine Textzeichenfolge. Es definiert nicht die Eigenschaften, wie es gerendert wird. Zum Anzeigen von Text auf dem Bildschirm wird normalerweise ein UILabel oder UITextView verwendet. Für das Auswahlverhalten, das Sie in Ihrem Beispiel zeigen, müssen Sie jedoch selbst zeichnen. Außerdem ändert sich die Textfarbe des ausgewählten Textes. Sie müssen also selbst damit umgehen.

Wenn Sie ein benutzerdefiniertes UIView erstellt haben, mit dem Sie den blauen Auswahlbereich zeichnen können, können Sie dies hinter einem UILabel platzieren, und Sie können einen NSAttributedString verwenden, um den Text des Labels festzulegen, für den "ausgewählt "Text ist weiß statt schwarz. Das wäre wahrscheinlich der einfachste Weg, dies zu tun.

    
Gavin 18.02.2014 15:20
quelle