0

私は言うごとに3つの列に分割したいUILabelを持っています。最初の範囲 (NSRangeMake(0,5)) を kCTLeftAlignment、2 番目の範囲を kCTCenterAlignment、3 番目の範囲を kCTRightAlignment にすることを検討しています。

私はまだ CoreText を使用していないので、(現在は NSTextAlignmentLeft) テキストの配置を kCTRightAlignment に変更しようとしていましたが、クラッシュしました。

これまでの私のコードは次のとおりです。UILabel は正しく表示され、attributedText がなくても機能します。NSAttributedString のヘルプを探しているだけです。

- (void)setTitle:(NSString *)_title {
    titleLabel.text = _title;
    NSMutableAttributedString * attr = [[NSMutableAttributedString alloc] initWithString:_title];

    CTTextAlignment theAlignment = kCTRightTextAlignment;
    CFIndex theNumberOfSettings = 1;
    CTParagraphStyleSetting theSettings[1] = {{ kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &theAlignment }};
    CTParagraphStyleRef theParagraphRef = CTParagraphStyleCreate(theSettings, theNumberOfSettings);
    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:(__bridge id)theParagraphRef, (id)kCTParagraphStyleAttributeName, nil]; 
    [attr addAttributes:attributes range:NSMakeRange(0, _title.length)];

    titleLabel.attributedText = attr;
}

そして、ここにエラー/クラッシュがあります

2013-01-24 13:05:59.928 Expandable[12376:c07] -[__NSCFType lineBreakMode]: unrecognized selector sent to instance 0x716f1b0
2013-01-24 13:05:59.929 Expandable[12376:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType lineBreakMode]: unrecognized selector sent to instance 0x716f1b0'
*** First throw call stack:
(0x157c012 0x13a1e7e 0x16074bd 0x156bbbc 0x156b94e 0x33ebea1 0x33eba56 0x446c24 0x4452e9 0x4476a8 0x3394be 0x203a3f 0x20396b 0x115697 0x20383c 0x2039ba 0x2032b6 0x203994 0x1f80e2 0x1f815c 0x1760bc 0x177227 0x1778e2 0x1544afe 0x1544a3d 0x15227c2 0x1521f44 0x1521e1b 0x19f87e3 0x19f8668 0x2e965c 0x209d 0x1fc5 0x1)
libc++abi.dylib: terminate called throwing an exception
(lldb) 

ここまでたどり着くためにいくつかの検索と調査を行いましたが、行き詰まっています。前もって感謝します!

4

2 に答える 2