2011-07-22 17 views

答えて

1

私はこの質問が少し古くなっていることに気付きました。あなたはまだこの問題について助けが必要であり、この投稿があなたに役立つことを願っています。

NSAttributedString(またはその可変対応NSMutableAttributedString)を使用して、単一の文字列の特定の範囲に異なる属性(フォント、名前とサイズの両方など)を割り当てることができます。

上付き文字と下付き文字は、コアテキストでネイティブにサポートされていないため、非常に多くの作業を行う必要があります。幸いにもOliver Drobnikが開発したカカオ遺伝学のオープンソースプロジェクトでは、HTMLをNSAttributedString(またはNSMutableAttributedString)に簡単に変換し、カスタムのテキストビューに送り、上付き文字と下付き文字を他のHTMLやCSSとともに表示できますUIWebviewに表示されますが、UIWebviewを使用する必要はありません。プロジェクトはhereからダウンロードできます。

多くの労力がこのプロジェクトに入れてきたが、2つの注意点があります。

  1. 計算は非常にパフォーマンスの集中的な時間で可能に。
  2. まだすべてのHTMLタグとCSS機能がサポートされているわけではありません。
+0

ありがとうございました... – SST

+0

他の人の将来の参考情報として、このプロジェクトは現在https://github.com/Cocoanetics/DTCoreTextにあります。 – Glinkot

0

IF NSAttributedStringは、コアテキストではなくNSAttributedStringで上付き文字/下付き文字エフェクトを作成することができます。これは私がそれをやった方法です:

NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:myString]; 
// Everything except the first character is rendered with the regular size/position 
[str addAttribute:NSFontAttributeName 
    value:font 
    range:NSMakeRange(1, [amountString length]-1)]; // Everything except the first character is rendered with the regular size/position 
// First character is 5/8 normal size 
[str addAttribute:NSFontAttributeName 
    value:[UIFont fontWithName:initialFont.fontName 
    size:initialFont.pointSize/8*5] 
    range:NSMakeRange(0, 1)]; 
// Set the baseline offset to push the first character into a superscript position 
[str addAttribute:@"NSBaselineOffset" 
    value:[NSNumber numberWithFloat:initialFont.pointSize*1/3] 
    range:NSMakeRange(0, 1)]; 

キー行はスーパー/サブスクリプトテキストのサイズを小さくすると、それは垂直方向の位置だ変える最後の二つ、あります。定義済みの属性名定数(NSBaselineOffsetAttributeName)の代わりに文字列(@ "NSBaselineOffset")を使用していることには注意してください。私が集めることができたことから、私はNSBaselineOffsetAttributeNameがMac用ライブラリで定義されているが、iOS用では定義されていないと信じています。結果として、属性名の定数ではなく、文字列自体を使用しました。

+0

'@" NSBaselineOffset "はiOSでは動作しませんiOS 8.3)。 – wangii

+1

私はキーが "CoreTextの代わりに"だと思います。私はCoreTextを使ってPDFコンテンツを生成していますが、上付き文字や下付き文字は何もありません。同じアプリケーションでは、私はUILabelで上記の(より小さなフォント+ベースラインシフト)を使用しており、それは素晴らしい作品です。 –

関連する問題