Muszę przeszukać niektóre ciągi i ustawić niektóre atrybuty przed scaleniem ciągów, więc posiadanie NSStrings -> Concatenate je -> Make NSAttributedString nie jest opcją, czy istnieje sposób, aby połączyć atrybuty atrybutu z innym ciągiem atrybutu?
ios
nsattributedstring
Imanou Petit
źródło
źródło
Odpowiedzi:
Zalecałbym użycie pojedynczego przypisywanego ciągu znaków, który zasugerował @Linuxios, a oto kolejny przykład:
Jednak tylko po to, aby uzyskać wszystkie dostępne opcje, możesz również utworzyć pojedynczy zmienny przypisany ciąg, utworzony ze sformatowanego ciągu NSString zawierającego ciągi wejściowe już zebrane. Następnie możesz użyć,
addAttributes: range:
aby dodać atrybuty po fakcie do zakresów zawierających ciągi wejściowe. Polecam jednak ten pierwszy sposób.źródło
Jeśli używasz języka Swift, możesz po prostu przeciążać
+
operator, aby można było je łączyć w ten sam sposób, w jaki łączysz zwykłe ciągi:Teraz możesz je połączyć, po prostu dodając je:
źródło
return NSAttributedString(attributedString: result)
Helpers
lubExtensions
i umieściłbym tę funkcję w pliku o nazwieNSAttributedString+Concatenate.swift
.Swift 3: Po prostu utwórz NSMutableAttributedString i dołącz do nich przypisane ciągi.
swift5 upd:
źródło
Spróbuj tego:
Gdzie
astring1
iastring2
sąNSAttributedString
s.źródło
[[aString1 mutableCopy] appendAttributedString: aString2]
.NSMutableAttributedString* aString3 = [aString1 mutableCopy]; [aString3 appendAttributedString: aString2];
.result
jakoNSMutableAttributedString
. nie jest tym, co autor chce zobaczyć.stringByAppendingString
- ta metoda będzie dobra2020 | SWIFT 5.1:
Możesz dodać 2
NSMutableAttributedString
w następujący sposób:Inny sposób działa z obydwoma
NSMutableAttributedString
iNSAttributedString
:Innym sposobem jest ...
i:
Możesz to zrobić za pomocą następującego rozszerzenia:
źródło
NSAttrStr1.append(NSAttrStr2)
Jeśli używasz Cocoapods, alternatywą dla obu powyższych odpowiedzi, które pozwalają uniknąć zmienności we własnym kodzie, jest użycie doskonałej kategorii NSAttributedString + CCLFormat na
NSAttributedString
s, która pozwala napisać coś takiego:Oczywiście używa się go tylko
NSMutableAttributedString
pod kołdrą.Ma również tę dodatkową zaletę, że jest pełnoprawną funkcją formatowania - może więc zrobić o wiele więcej niż dołączanie ciągów do siebie.
źródło
źródło
Możesz spróbować SwiftyFormat Używa następującej składni
źródło