NSA 귀속 문자열을 연결하려면 어떻게 해야 합니까?
문자열을 병합하기 전에 일부 문자열을 검색하고 속성을 설정해야 하므로 NSStrings -> 연결 -> NSA 속성 문자열 만들기는 옵션이 아닙니다. attributedString을 다른 속성 문자열에 연결할 수 있는 방법이 있습니까?
@Linuxios에서 제안한 단일 가변 속성 문자열을 사용하는 것이 좋습니다. 여기 또 다른 예가 있습니다.
NSMutableAttributedString *mutableAttString = [[NSMutableAttributedString alloc] init];
NSString *plainString = // ...
NSDictionary *attributes = // ... a dictionary with your attributes.
NSAttributedString *newAttString = [[NSAttributedString alloc] initWithString:plainString attributes:attributes];
[mutableAttString appendAttributedString:newAttString];
그러나 모든 옵션을 사용할 수 있도록 이미 조합된 입력 문자열이 포함된 형식화된 NSString으로 만든 단일 가변 속성 문자열을 만들 수도 있습니다.그러면 사용할 수 있습니다.addAttributes: range:
입력 문자열을 포함하는 범위에 사실 뒤의 속성을 추가합니다.하지만 저는 전자 방식을 추천합니다.
스위프트를 사용하고 있다면, 당신은 단지 오버로드를 할 수 있습니다.+
연산자를 사용하여 일반 문자열을 연결하는 것과 같은 방식으로 연결할 수 있습니다.
// concatenate attributed strings
func + (left: NSAttributedString, right: NSAttributedString) -> NSAttributedString
{
let result = NSMutableAttributedString()
result.append(left)
result.append(right)
return result
}
이제 추가하기만 하면 연결할 수 있습니다.
let helloworld = NSAttributedString(string: "Hello ") + NSAttributedString(string: "World")
Swift 3: NSMutableAttributedString을 만들고 여기에 속성 문자열을 추가하기만 하면 됩니다.
let mutableAttributedString = NSMutableAttributedString()
let boldAttribute = [
NSFontAttributeName: UIFont(name: "GothamPro-Medium", size: 13)!,
NSForegroundColorAttributeName: Constants.defaultBlackColor
]
let regularAttribute = [
NSFontAttributeName: UIFont(name: "Gotham Pro", size: 13)!,
NSForegroundColorAttributeName: Constants.defaultBlackColor
]
let boldAttributedString = NSAttributedString(string: "Warning: ", attributes: boldAttribute)
let regularAttributedString = NSAttributedString(string: "All tasks within this project will be deleted. If you're sure you want to delete all tasks and this project, type DELETE to confirm.", attributes: regularAttribute)
mutableAttributedString.append(boldAttributedString)
mutableAttributedString.append(regularAttributedString)
descriptionTextView.attributedText = mutableAttributedString
swift5 upd:
let captionAttribute = [
NSAttributedString.Key.font: Font.captionsRegular,
NSAttributedString.Key.foregroundColor: UIColor.appGray
]
사용해 보십시오.
NSMutableAttributedString* result = [astring1 mutableCopy];
[result appendAttributedString:astring2];
어디에astring1
그리고.astring2
이다NSAttributedString
s.
2020 | SWIFT 5.1:
2개를 추가할 수 있습니다.NSMutableAttributedString
다음 방법으로:
let concatenated = NSAttrStr1.append(NSAttrStr2)
또 다른 방법은NSMutableAttributedString
그리고.NSAttributedString
둘 다:
[NSAttrStr1, NSAttrStr2].joinWith(separator: "")
또 다른 방법은..
var full = NSAttrStr1 + NSAttrStr2 + NSAttrStr3
그리고:
var full = NSMutableAttributedString(string: "hello ")
// NSAttrStr1 == 1
full += NSAttrStr1 // "hello 1"
full += " world" // "hello 1 world"
다음 확장자를 사용하여 이 작업을 수행할 수 있습니다.
// works with NSAttributedString and NSMutableAttributedString!
public extension NSAttributedString {
static func + (left: NSAttributedString, right: NSAttributedString) -> NSAttributedString {
let leftCopy = NSMutableAttributedString(attributedString: left)
leftCopy.append(right)
return leftCopy
}
static func + (left: NSAttributedString, right: String) -> NSAttributedString {
let leftCopy = NSMutableAttributedString(attributedString: left)
let rightAttr = NSMutableAttributedString(string: right)
leftCopy.append(rightAttr)
return leftCopy
}
static func + (left: String, right: NSAttributedString) -> NSAttributedString {
let leftAttr = NSMutableAttributedString(string: left)
leftAttr.append(right)
return leftAttr
}
}
public extension NSMutableAttributedString {
static func += (left: NSMutableAttributedString, right: String) -> NSMutableAttributedString {
let rightAttr = NSMutableAttributedString(string: right)
left.append(rightAttr)
return left
}
static func += (left: NSMutableAttributedString, right: NSAttributedString) -> NSMutableAttributedString {
left.append(right)
return left
}
}
Cocoapods를 사용하는 경우, 자신의 코드에서 변동성을 방지할 수 있는 위의 두 답변에 대한 대안은 우수한 NSA 귀속 String+CCL 형식 범주를 사용하는 것입니다.NSAttributedString
다음과 같은 것을 쓸 수 있습니다.
NSAttributedString *first = ...;
NSAttributedString *second = ...;
NSAttributedString *combined = [NSAttributedString attributedStringWithFormat:@"%@%@", first, second];
물론 그것은 그냥 사용합니다.NSMutableAttributedString
비밀리에
또한 완전한 포맷 기능이라는 추가적인 이점이 있으므로 문자열을 함께 추가하는 것보다 훨씬 더 많은 기능을 수행할 수 있습니다.
// Immutable approach
// class method
+ (NSAttributedString *)stringByAppendingString:(NSAttributedString *)append toString:(NSAttributedString *)string {
NSMutableAttributedString *result = [string mutableCopy];
[result appendAttributedString:append];
NSAttributedString *copy = [result copy];
return copy;
}
//Instance method
- (NSAttributedString *)stringByAppendingString:(NSAttributedString *)append {
NSMutableAttributedString *result = [self mutableCopy];
[result appendAttributedString:append];
NSAttributedString *copy = [result copy];
return copy;
}
SwiftyFormat은 다음 구문을 사용합니다.
let format = "#{{user}} mentioned you in a comment. #{{comment}}"
let message = NSAttributedString(format: format,
attributes: commonAttributes,
mapping: ["user": attributedName, "comment": attributedComment])
private var fillAttributes:[NSMutableAttributedString.Key : Any]? = nil
fontAttributes = [.foregroundColor : SKColor.red,
.strokeWidth : 0.0,
.font : CPFont(name: "Verdana-Bold",
.size : 50,]
fontAttributes.updateValue(SKColor.green, forKey: .foregroundColor)
언급URL : https://stackoverflow.com/questions/18518222/how-can-i-concatenate-nsattributedstrings
'programing' 카테고리의 다른 글
Ajax 업데이트 후 jQuery에서 이벤트 다시 바인딩(업데이트 패널) (0) | 2023.07.01 |
---|---|
ASP.NET MVC - QueryString 값 가져오기 (0) | 2023.07.01 |
Excel VBA 기능을 사용하여 배열을 워크북에 인쇄 (0) | 2023.07.01 |
SELECT FROM 문에서 테이블 유형을 사용하는 방법은 무엇입니까? (0) | 2023.07.01 |
.NET 4.5 웹 소켓 대 신호 R (0) | 2023.06.26 |