Mam taki sznurek
var str = "@text1 this is good @text1"
text1
Powiedzmy, że teraz zastąp innym ciągiem t 1
. Mogę zamienić tekst, ale nie mogę go pogrubić. Chcę pogrubić nowy ciąg t 1
, aby ostateczny wynik był następujący:
@t 1 to jest dobre @t 1
Jak mogę to zrobić?
Wszystkie przykłady, które widzę, są w Objective-C, ale chcę to zrobić w Swift.
Z góry dziękuję.
ios
swift
ios8
nsmutableattributedstring
user2413621
źródło
źródło
Odpowiedzi:
Stosowanie:
Wynik:
Oto zgrabny sposób na połączenie pogrubionych i normalnych tekstów na jednej etykiecie oraz kilka innych dodatkowych metod.
Rozszerzenie: Swift 5. *
źródło
func bold(_ text:String, _ size:CGFloat)
. Dodałem rozmiar do pogrubienia, aby móc kontrolować go z zewnątrz. Poza tym brakowało miAvenirNext-Medium
czcionki w tej funkcji, więc zrozumienie, dlaczego nie widzę mojej czcionki, zajęło mi kilka minut. Heads-up.Jeśli chcesz przypisać go do etykiety:
źródło
edycja / aktualizacja: Xcode 8.3.2 • Swift 3.1
Jeśli znasz HTML i CSS, możesz go użyć do łatwej kontroli stylu czcionki, koloru i rozmiaru przypisanego ciągu w następujący sposób:
źródło
<link href=\"https://fonts.googleapis.com/css?family=Frank+Ruhl+Libre\" rel=\"stylesheet\"> <span style=\"font-family: 'Frank Ruhl Libre', sans-serif;\">שלום</span>
Jeśli pracujesz ze zlokalizowanymi ciągami znaków, możesz nie być w stanie polegać na tym, że pogrubiony ciąg zawsze znajduje się na końcu zdania. W takim przypadku dobrze działa następujące rozwiązanie:
np. zapytanie „bla” nie pasuje do żadnych elementów
źródło
Rozszerzyłem świetną odpowiedź Davida Westa, abyś mógł wprowadzić ciąg i powiedzieć mu wszystkie podciągi, które chcesz ośmielić:
A potem nazwij to tak:
To ośmieli wszystkie podciągi, które chcesz pogrubić w danym ciągu
źródło
To najlepszy sposób, na jaki wpadłem. Dodaj funkcję, którą możesz wywołać z dowolnego miejsca i dodaj ją do pliku bez klasy, takiej jak Constants.swift, a następnie możesz ośmielić słowa w dowolnym ciągu, wielokrotnie, wywołując tylko JEDNĄ LINIĘ kodu:
Aby przejść do pliku constants.swift:
Następnie możesz po prostu wywołać tę jedną linię kodu dla dowolnego UILabel:
źródło
Opierając się na doskonałych odpowiedziach Jeremy'ego Badera i Davida Westa, rozszerzenie Swift 3:
Stosowanie:
źródło
stosowanie....
dwa centy...
źródło
Przyjmując jako poprawną odpowiedź Prajeeta Shrestha w tym wątku, chciałbym rozszerzyć jego rozwiązanie o etykietę, jeśli jest znana, oraz cechy czcionki.
Szybki 4
źródło
Swift 4 i wyżej
Dla Swift 4 i nowszych to dobry sposób:
W etykiecie tekst wygląda tak: „Cześć John ”
źródło
Super łatwy sposób na zrobienie tego.
Aby uzyskać więcej informacji, kliknij tutaj: https://github.com/iOSTechHub/AttributedString
źródło
apply
metody z wybraną czcionkąTo może być przydatne
źródło
Swift 3.0
Konwertuj HTML na ciąg i zmianę czcionki zgodnie z wymaganiami.
źródło
Data("I'm a normal text and <b>this is my bold part . </b>And I'm again in the normal text".utf8)
i ustawić kodowanie znaków w opcjach[NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue]
Po prostu użyj kodu podobnego do tego:
źródło
dwie wkładki w swift 4:
źródło
Swift 5,1 używać
NSAttributedString.Key
zamiastNSAttributedStringKey
źródło
Dla -> Wyszukaj telewizję według rozmiaru
Jednokierunkowe przy użyciu NString i jego zakresu
inny bez użycia NString i jego Range
swift5
źródło
Poprawa odpowiedzi Prajeeta Shrestha: -
Możesz utworzyć ogólne rozszerzenie dla NSMutableAttributedString, które obejmuje mniej kodu. W tym przypadku zdecydowałem się użyć czcionki systemowej, ale możesz ją dostosować, aby wprowadzić nazwę czcionki jako parametr.
źródło
Możesz to zrobić za pomocą prostej niestandardowej metody opisanej poniżej. Musisz podać cały ciąg w pierwszym parametrze i tekst, który ma być pogrubiony w drugim parametrze. Mam nadzieję, że to pomoże.
użycie: initalString = Jestem chłopcem
label.attributedText = getAttributedBoldString (str: initalString, boldTxt: "Boy")
wynikowy ciąg = Jestem chłopcem
źródło