化学式(H2O、Na^2 +など)の下付き文字を作成する必要がありますか?NSAttributedStringを使用して下付き文字と上付き文字を作成する方法は?
NSAttributedStringでこれを行うことは可能ですか、またはサブスクリプトを作成する代替/簡単な方法がありますか?
化学式(H2O、Na^2 +など)の下付き文字を作成する必要がありますか?NSAttributedStringを使用して下付き文字と上付き文字を作成する方法は?
NSAttributedStringでこれを行うことは可能ですか、またはサブスクリプトを作成する代替/簡単な方法がありますか?
NSAttributedString
とすることができます。探している属性定数は、プラットフォームによって異なります。 Mac OS Xの場合はNSSuperscriptAttributeName
、iOSの場合はkCTSuperscriptAttributeName
です。添え字に負の値を渡します。
唯一の注意点は、iOSのUILabel
はNSAttributedString
を描画できないことです(ただし、iOS 6では指が交差しています)。あなたは、コアテキストを使用してテキストを描画するか、NSAttributedString
を描くことができるUILabel
の第三者代替品を見つける必要があります。
ここでは、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];
、私は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;
}
作りたいんできた場合
ありがとうございます@hari – Ramdy
ここに「スタイル」は何ですか? –
@AadilKeshwani @AadilKeshwani @AadilKeshwani @AadilKeshwaniフォント、サイズ、色を一元管理するための単なる静的クラスです。アプリに関連する他のスタイル –
。
文書を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];
@Bhargav Raoこれは迅速に、それは私がこの答えを書いているthatsです。 –
ありがとうございます。 kCTSuperscriptAttributeNameを使用して上付き文字を作成できますか? – Mahir
はい、私が述べたように、正の値は上付き文字です。添え字の負の値。 –
申し訳ありませんが、私はそれを逃したか分かりません。再度、感謝します。 – Mahir