2011-12-18 22 views

答えて

28

NSAttributedStringとすることができます。探している属性定数は、プラットフォームによって異なります。 Mac OS Xの場合はNSSuperscriptAttributeName、iOSの場合はkCTSuperscriptAttributeNameです。添え字に負の値を渡します。

唯一の注意点は、iOSのUILabelNSAttributedStringを描画できないことです(ただし、iOS 6では指が交差しています)。あなたは、コアテキストを使用してテキストを描画するか、NSAttributedStringを描くことができるUILabelの第三者代替品を見つける必要があります。

+0

ありがとうございます。 kCTSuperscriptAttributeNameを使用して上付き文字を作成できますか? – Mahir

+1

はい、私が述べたように、正の値は上付き文字です。添え字の負の値。 –

+0

申し訳ありませんが、私はそれを逃したか分かりません。再度、感謝します。 – Mahir

33

ここでは、iOS 6で何をしましたか?最初にCoreTextとQuartzCoreフレームワークを追加します。 [インポート:

​​

私は無地のNSStringを入力し、上付き文字の最後の文字でNSMutableAttributedStringをエクスポート小さな関数を作りました。これは、上付き文字または下付き文字を設定できるように変更でき、kCTSuperscriptAttributeNameの値を-1に変更します。また、文字列に上付き文字をどこに置くかを指定する変数を追加することもできます。今は文字列の終わりを仮定しています。

- (NSMutableAttributedString *)plainStringToAttributedUnits:(NSString *)string; 
{ 
    NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:string]; 
    UIFont *font = [UIFont systemFontOfSize:10.0f]; 
    UIFont *smallFont = [UIFont systemFontOfSize:9.0f]; 

    [attString beginEditing]; 
    [attString addAttribute:NSFontAttributeName value:(font) range:NSMakeRange(0, string.length - 2)]; 
    [attString addAttribute:NSFontAttributeName value:(smallFont) range:NSMakeRange(string.length - 1, 1)]; 
    [attString addAttribute:(NSString*)kCTSuperscriptAttributeName value:@"1" range:NSMakeRange(string.length - 1, 1)]; 
    [attString addAttribute:(NSString*)kCTForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, string.length - 1)]; 
    [attString endEditing]; 
    return attString; 
} 

今、私はそれを使用したい場合、私はUITextFieldの中にそれを置くために次の操作を行うことができます。

NSString *qlwUnitsPlainText = @"m3"; 
    self.quantityLoadWeightUnits_textField.attributedText = [self plainStringToAttributedUnits:qlwUnitsPlainText]; 

を、私は、これは他の誰かが、多くの例がそこにはありません役に立てば幸い!あなたはまた、次のあなたはそれlitleクリーナーのiOS上で

NSDictionary *attr = @{ NSFontAttributeName: smallfont, 
         (NSString*)kCTSuperscriptAttributeName: @1 } 

NSRange fabricWeightRange = NSMakeRange(fabricWeight.location + 2, 1);     
[subKeyString setAttributes:attr range:fabricWeightRange]; 
+0

あなたはattributedStringのこの部分を見てください。https://gist.github.com/mladjan/6663691 上付き文字を表示したくありません:( – dormitkon

+3

NSMakeRangeパラメータはfirstPositionとlengthです – dwbrito

+0

どうすれば削除できますか –

0

、私はkCTSuperscriptAttributeName定数を逃したが、フォントサイズや、「ベースライン」との良好な結果を持っていました。それはあまり従順なフォントにあまりにもあなたをもう少しコントロールを与える:@ -1としてkCTSuperscriptAttributeNameの添え字の使用価値については

+ (NSAttributedString *)attributedStringForText:(NSString *)normalText andSuperscript:(NSString *)superscriptText textSize:(CGFloat)textSize 
{ 
    UIFont *normalFont = [Styles mainFontWithSize:textSize]; 
    UIFont *superFont = [Styles mainFontWithSize:textSize/2]; 

    NSMutableAttributedString *finalStr = [[NSMutableAttributedString alloc] initWithString:normalText attributes:@{NSFontAttributeName: normalFont}]; 

    NSAttributedString *superStr = [[NSAttributedString alloc] initWithString:superscriptText attributes:@{NSFontAttributeName: superFont, NSBaselineOffsetAttributeName:@(textSize/2)}]; 

    [finalStr appendAttributedString:superStr]; 

    return finalStr; 
}  
5

作りたいんできた場合

+0

ありがとうございます@hari – Ramdy

+0

ここに「スタイル」は何ですか? –

+0

@AadilKeshwani @AadilKeshwani @AadilKeshwani @AadilKeshwaniフォント、サイズ、色を一元管理するための単なる静的クラスです。アプリに関連する他のスタイル –

0

文書を1として

@discussion値はCFNumberRefでなければなりません。デフォルトはint値0です。 が指定されたフォントで をサポートする場合、値1はスーパースクリプトを有効にし、 値-1はサブスクリプトを有効にします。

extern const CFStringRef kCTSuperscriptAttributeName CT_AVAILABLE(10_5、3_2);

Example- [lblHeader setText:@“Headers [Alpha1 – text”]; 

     NSMutableAttributedString *headerSubscript = [[NSMutableAttributedString alloc]initWithAttributedString: lblHeader.attributedText]; 

     [headerSubscript addAttribute:(NSString *)kCTSuperscriptAttributeName value:@-1 range:NSMakeRange(14,1)];  

     [lblHeader setAttributedText:headerSubscript]; 
+0

@Bhargav Raoこれは迅速に、それは私がこの答えを書いているthatsです。 –

関連する問題