2013-05-23 3 views

답변

11

이 항목을 사용하십시오. 그리고 #import <CoreText/CTStringAttributes.h>을 가져와야합니다. 이 코드는 iOS6 이상 버전에서만 작동합니다.

UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 200, 40)]; 
NSString *[email protected]"X2 and H20 A‡ B† C*"; 

NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:infoString]; 

[attString addAttribute:(NSString *)kCTSuperscriptAttributeName value:@1 range:NSMakeRange(1, 1)]; 
[attString addAttribute:(NSString *)kCTSuperscriptAttributeName value:@-1 range:NSMakeRange(8, 1)]; 
[attString addAttribute:(NSString *)kCTSuperscriptAttributeName value:@1 range:NSMakeRange(12, 1)]; 
[attString addAttribute:(NSString *)kCTSuperscriptAttributeName value:@1 range:NSMakeRange(15, 1)]; 
[attString addAttribute:(NSString *)kCTSuperscriptAttributeName value:@1 range:NSMakeRange(18, 1)]; 

lbl.attributedText = attString; 

[self.view addSubview:lbl]; 

출력 enter image description here

나는이 당신에게

2

NSString은 텍스트의 특정 부분을 서식 지정할 수 없습니다. UILabel, UITextField 또는 UITextView에 텍스트를 표시하려는 경우 NSAttributedString을 사용하고 @1 값을 갖는 kCTSuperscriptAttributeName 속성을 적용 할 수 있습니다. UIWebView을 사용하는 경우 HTML의 <sup> 요소를 사용하십시오.

+0

그러나 내가 그렇게 할 수있는 방법을 유니 코드 문자입니다. 매번 추가해야 할 때마다 위 첨자의 유니 코드 문자를 사용할 수있는 경우 매우 유용합니다. – Vinodh

+2

위 첨자 대거 또는 이중 대거에 유니 코드 문자가없고 유니 코드 위 첨자 별표 만 결합됩니다 (오버랩됩니다 다른 캐릭터). 당신이하고 싶은 일을하는 유일한 방법은 일반 문자를 삽입하고 HTML 또는 NSAttributedString을 사용하여 그것을 위 첨자로 만드는 것입니다. 현재 NSMutableString을 추가함으로써 NSMutableString을 구축하고 있다면 NSMutableAttributedString을 사용하는 코드를별로 어려움없이 변환 할 수 있습니다. –

0

이 당신이 그것을 얻을 수있는 방법은 다음과 같습니다

NSString *string = @"abcdefghi"; 

NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string]; 

NSInteger num1 = 1; 
CFNumberRef num2 = CFNumberCreate(NULL, kCFNumberNSIntegerType, &num1); 

[attrString addAttribute:(id)kCTSuperscriptAttributeName value:(id)CFBridgingRelease(num2) range:NSMakeRange(6, 3)]; 

self.label.attributedText = attrString; 

, 레이블이 이미 UI에 추가 UILabel의 속성입니다.

CoreText 프레임 워크를 먼저 추가하고이 행을 맨 위에 추가하십시오. .m 파일.

희망 하시겠습니까?

+1

NSNumber와 CFNumber는 수신자 부담으로 연결되어 있으므로 여기서 NSNumber가 수행 할 때 CFNumber를 작성하고 Core Foundation의 메모리 관리를 처리 할 이유가 없습니다. –

0

스위프트

단계를 도움이되기를 바랍니다 1.

,546,

2 단계

let range1 = NSMakeRange(1, 1) 
    let range2 = NSMakeRange(5, 1) 

    let mutableStr : NSMutableAttributedString = NSMutableAttributedString(string: "h20 x2") 
    mutableStr.addAttribute(kCTSuperscriptAttributeName as String, value:-1, range: range1) 
    mutableStr.addAttribute(kCTSuperscriptAttributeName as String, value:1, range: range2) 

    self.lbl.attributedText = mutableStr 

출력 :

enter image description here

내 대답 @see
+0

iOS 10.3부터 작동이 멈췄습니다. 다른 사람이 이것을 경험 했습니까? – gardenofwine

+0

로직 변경 방법이 변경되지 않았을 수 있으므로 약간 수정할 수 있습니다. –

관련 문제