kishikawakatsumi / SECoreTextView

SECoreTextView is multi style text view.
MIT License
943 stars 143 forks source link

テキストのアライメントが反映されない #20

Closed usami-k closed 10 years ago

usami-k commented 10 years ago

選択範囲を中央寄せにするために以下のようにしてみましたが、反映されませんでした。

CTTextAlignment textAlignment = kCTTextAlignmentCenter;

CTParagraphStyleSetting setting[] = {
    { kCTParagraphStyleSpecifierAlignment, sizeof(textAlignment), &textAlignment},
    { kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(lineHeight), &lineHeight },
    { kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(lineHeight), &lineHeight },
    { kCTParagraphStyleSpecifierLineSpacing, sizeof(lineSpacing), &lineSpacing },
    { kCTParagraphStyleSpecifierMinimumLineSpacing, sizeof(lineSpacing), &lineSpacing },
    { kCTParagraphStyleSpecifierMaximumLineSpacing, sizeof(lineSpacing), &lineSpacing },
    { kCTParagraphStyleSpecifierParagraphSpacing, sizeof(paragraphSpacing), &paragraphSpacing }
};

CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(setting, sizeof(setting) / sizeof(CTParagraphStyleSetting));
[attributedString addAttributes:@{(id)kCTParagraphStyleAttributeName: (__bridge id)paragraphStyle} range:selectedRange];
CFRelease(paragraphStyle);
kishikawakatsumi commented 10 years ago

CTParagraphStyleRefはテキストビュー全体の設定で上書きされるからですね。 textView.textAlignmentを設定すれば全体の右寄せ、センタリング、左寄せは可能です。

段落ごとにスタイル適用したり、などを可能にするにはインターフェースが複雑になると思うので、各自サブクラスなどでカスタマイズしてもらうのがいいかなと思っています。

usami-k commented 10 years ago

コメントありがとうございます。 段落ごとに TextAlignment を変えたいと思ったので、自分でカスタマイズしてみます。 (とりあえず自分のやりたいことにあわせて。汎用に作るのは難しそうですね・・・)