수색…


비고

NSAttributedString을 사용하여 글꼴 색 설정

커스텀 커닝 (문자 간격)이있는 문자열 만들기

NSAttributedString (및 해당 mutable 형제 NSMutableAttributedString )을 사용하면 복잡한 모양의 문자열을 사용자에게 만들 수 있습니다.

일반적인 응용 프로그램은 문자열을 표시하고 사용자 정의 커닝 / 문자 간격을 추가하는 데이 코드를 사용하는 것입니다.

이것은 다음과 같이 달성 될 것입니다 (label은 UILabel 임). "kerning"이라는 단어에 다른 커닝을 사용합니다.

빠른

var attributedString = NSMutableAttributedString("Apply kerning")
attributedString.addAttribute(attribute: NSKernAttributeName, value: 5, range: NSMakeRange(6, 7))
label.attributedText = attributedString

목표 -C

NSMutableAttributedString *attributedString;
attributedString = [[NSMutableAttributedString alloc] initWithString:@"Apply kerning"];
[attributedString addAttribute:NSKernAttributeName value:@5 range:NSMakeRange(6, 7)];
[label setAttributedText:attributedString];

취소 선 텍스트가있는 문자열 만들기

목표 -C

NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Your String here"];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
                    value:@2
                    range:NSMakeRange(0, [attributeString length])];

빠른

let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: "Your String here")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))

그런 다음 UILabel에 추가 할 수 있습니다.

yourLabel.attributedText = attributeString;

Swift에서 속성이있는 문자열과 굵은 텍스트 추가

let someValue : String = "Something the user entered"     
let text = NSMutableAttributedString(string: "The value is: ")
text.appendAttributedString(NSAttributedString(string: someValue, attributes: [NSFontAttributeName:UIFont.boldSystemFontOfSize(UIFont.systemFontSize())]))

결과는 다음과 같습니다.

값은 다음과 같습니다 . 사용자가 입력 한 내용

단어 또는 문자열의 색상 변경

목표 -C

UIColor *color = [UIColor redColor];
NSString *textToFind = @"redword";

NSMutableAttributedString *attrsString =  [[NSMutableAttributedString alloc] initWithAttributedString:yourLabel.attributedText];

// search for word occurrence
NSRange range = [yourLabel.text rangeOfString:textToFind];
if (range.location != NSNotFound) {
    [attrsString addAttribute:NSForegroundColorAttributeName value:color range:range];
}

// set attributed text
yourLabel.attributedText = attrsString;

빠른

let color = UIColor.red;
let textToFind = "redword"
        
let attrsString =  NSMutableAttributedString(string:yourlabel.text!);
        
// search for word occurrence
let range = (yourlabel.text! as NSString).range(of: textToFind)
if (range.length > 0) {
     attrsString.addAttribute(NSForegroundColorAttributeName,value:color,range:range)
}
        
// set attributed text
yourlabel.attributedText = attrsString

참고 :

여기서 주된 기능은 NSMutableAttributedString 과 selector NSForegroundColorAttributeName 을 사용하는 selector addAttribute:value:range 사용하여 문자열 범위의 색상을 변경하는 것입니다.

NSMutableAttributedString *attrsString =  [[NSMutableAttributedString alloc] initWithAttributedString:label.attributedText];
[attrsString addAttribute:NSForegroundColorAttributeName value:color range:range];

범위를 얻기 위해 다른 방법을 사용할 수 있습니다 (예 : NSRegularExpression).

모든 속성 제거하기

목표 -C

NSMutableAttributedString *mutAttString = @"string goes here";
NSRange range = NSMakeRange(0, mutAttString.length);
[mutAttString setAttributes:@{} range:originalRange];

Apple Documentation에 따라 addAttribute 아닌 setAttributes 가 사용됩니다.

빠른

mutAttString.setAttributes([:], range: NSRange(0..<string.length))


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow