Ich habe so eine Schnur
var str = "@text1 this is good @text1"
Ersetzen Sie nun beispielsweise durch eine text1
andere Zeichenfolge t 1
. Ich kann den Text ersetzen, aber ich kann ihn nicht fett schreiben. Ich möchte den neuen String fett schreiben t 1
, damit die endgültige Ausgabe lautet:
@t 1 das ist gut @t 1
Wie kann ich es tun?
Alle Beispiele, die ich sehe, sind in Objective-C, aber ich möchte es in Swift tun.
Danke im Voraus.
ios
swift
ios8
nsmutableattributedstring
user2413621
quelle
quelle
Antworten:
Verwendung:
Ergebnis:
Hier ist eine gute Möglichkeit, eine Kombination aus fettem und normalem Text in einem einzigen Etikett sowie einige andere Bonusmethoden zu erstellen.
Erweiterung: Swift 5. *
quelle
func bold(_ text:String, _ size:CGFloat)
. Ich habe dem Fettdruck eine Größe hinzugefügt, damit ich ihn von außen steuern kann. Außerdem habe ich dieAvenirNext-Medium
Schriftart in dieser Funktion verpasst, daher habe ich einige Minuten gebraucht, um zu verstehen, warum ich meine Schriftart nicht sehen kann. Kopf hoch.Wenn Sie es einem Label zuweisen möchten:
quelle
Bearbeiten / Aktualisieren: Xcode 8.3.2 • Swift 3.1
Wenn Sie HTML und CSS kennen, können Sie damit den Schriftstil, die Farbe und die Größe Ihrer zugewiesenen Zeichenfolge wie folgt steuern:
quelle
<link href=\"https://fonts.googleapis.com/css?family=Frank+Ruhl+Libre\" rel=\"stylesheet\"> <span style=\"font-family: 'Frank Ruhl Libre', sans-serif;\">שלום</span>
Wenn Sie mit lokalisierten Zeichenfolgen arbeiten, können Sie sich möglicherweise nicht darauf verlassen, dass die fett gedruckte Zeichenfolge immer am Ende des Satzes steht. Wenn dies der Fall ist, funktioniert Folgendes gut:
zB Abfrage "bla" stimmt nicht mit Elementen überein
quelle
Ich habe die großartige Antwort von David West erweitert, damit Sie einen String eingeben und ihm alle Teilzeichenfolgen mitteilen können, die Sie ermutigen möchten:
Und dann nenne es so:
Dadurch werden alle Teilzeichenfolgen ermutigt, die in der angegebenen Zeichenfolge fett gedruckt werden sollen
quelle
Dies ist der beste Weg, den ich mir ausgedacht habe. Fügen Sie eine Funktion hinzu, die Sie von überall aufrufen können, und fügen Sie sie einer Datei ohne eine Klasse wie Constants.swift hinzu. Anschließend können Sie Wörter in einer beliebigen Zeichenfolge bei zahlreichen Gelegenheiten ermutigen, indem Sie nur EINE Codezeile aufrufen :
So gehen Sie in eine constants.swift-Datei:
Dann können Sie diese eine Codezeile für jedes UILabel einfach aufrufen:
quelle
Aufbauend auf den hervorragenden Antworten von Jeremy Bader und David West, eine Swift 3-Erweiterung:
Verwendung:
quelle
Verwendung....
zwei Cent...
quelle
Ich akzeptiere die Antwort von Prajeet Shrestha in diesem Thread als gültig und möchte seine Lösung mithilfe des Labels erweitern, wenn dies bekannt ist und die Merkmale der Schriftart.
Swift 4
quelle
Super einfacher Weg dies zu tun.
Für weitere Informationen klicken Sie hier: https://github.com/iOSTechHub/AttributedString
quelle
apply
Methode mit der gewünschten SchriftartSwift 4 und höher
Für Swift 4 und höher ist das ein guter Weg:
Auf dem Etikett sieht der Text wie folgt aus: "Hi John "
quelle
Dies könnte nützlich sein
quelle
Swift 3.0
Konvertieren Sie HTML in Zeichenfolge und ändern Sie die Schriftart gemäß Ihren Anforderungen.
quelle
Data("I'm a normal text and <b>this is my bold part . </b>And I'm again in the normal text".utf8)
und die Zeichenkodierung in Optionen[NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue]
Verwenden Sie einfach Code wie folgt:
quelle
Zwei Liner in Swift 4:
quelle
Swift 5.1 verwenden
NSAttributedString.Key
stattNSAttributedStringKey
quelle
Für -> Fernsehen nach Größe suchen
1-Wege mit NString und seiner Reichweite
eine andere ohne Verwendung von NString und seiner Reichweite
swift5
quelle
Verbesserung der Antwort von Prajeet Shrestha: -
Sie können eine generische Erweiterung für NSMutableAttributedString erstellen, die weniger Code enthält. In diesem Fall habe ich mich für die Verwendung der Systemschrift entschieden, aber Sie können diese anpassen, um den Namen der Schrift als Parameter einzugeben.
quelle
Sie können dies mit einer einfachen benutzerdefinierten Methode tun, die unten beschrieben wird. Sie haben im ersten Parameter eine ganze Zeichenfolge und im zweiten Parameter einen fett gedruckten Text angegeben. Hoffe das wird helfen.
Verwendung: initalString = Ich bin ein Junge
label.attributedText = getAttributedBoldString (str: initalString, boldTxt: "Boy")
resultierende Zeichenfolge = Ich bin ein Junge
quelle