次の 2 つのスクリーンショットからわかるように、ios 5.1 と ios 6 の間で CoreText の実装にいくつかの違いがあるようです。
iOS 6:
iOS 5:
まず、テキストの色が正しく適用されていません。iOS 5.1では を指定kCTForegroundColorAttributeName
する必要があるようですがCGColor
、iOS 6 では UIColor を渡すだけで十分です。そこで、コードを次のように変更して問題を解決しました。
[attributes setObject:(id)[color CGColor]
forKey:(NSString*)kCTForegroundColorAttributeName];
次に、段落の間隔が少しずれています。"sight" と "According" の間の距離は 11px と 25px です (スクリーンショットで測定)。どちらの場合も、段落間隔は 5 に設定されています。
NSMutableData *styleSettingsArray = [NSMutableData data];
CGFloat spaceBefore,spaceAfter;
...
CTParagraphStyleSetting styleSettingB = {kCTParagraphStyleSpecifierParagraphSpacingBefore ,sizeof(CGFloat),&spaceBefore};
CTParagraphStyleSetting styleSettingA = {kCTParagraphStyleSpecifierParagraphSpacing ,sizeof(CGFloat),&spaceAfter};
[styleSettingsArray appendBytes:&styleSettingB length:sizeof(styleSettingB)];
[styleSettingsArray appendBytes:&styleSettingA length:sizeof(styleSettingA)];
...
if(styleSettingsArray.length > 0)
{
CTParagraphStyleRef paragraphStyleRef = CTParagraphStyleCreate([styleSettingsArray bytes], [styleSettingsArray length] / sizeof(CTParagraphStyleSetting));
[dictionary setObject:(__bridge id)(paragraphStyleRef) forKey:(NSString*)kCTParagraphStyleAttributeName];
CFRelease(paragraphStyleRef);
}
paragraphStyleRef
コンソールでの説明:
iOS 6:
CTParagraphStyle:
base writing direction = -1, alignment = 3, line break mode = 0, default tab interval = 0
first line head indent = 0, head indent = 0, tail indent = 0
line height multiple = 0, maximum line height = 0, minimum line height = 0
line spacing adjustment = 0, paragraph spacing = 5, paragraph spacing before = 5
iOS 5:
CTParagraphStyle:
writing direction = -1, alignment = 3, line break mode = 0, default tab interval = 0
first line head indent = 0, head indent = 0, tail indent = 0
line height multiple = 0, maximum line height = 0, minimum line height = 0
line spacing adjustment = 0, paragraph spacing = 5, paragraph spacing before = 5
私には同じように見えるので、何が問題なのかわかりません。段落間の間隔以外は同じです。
では、どうすればこれを修正できますか?また、テキストの表示が異なる可能性があることに注意する必要があることは他にありますか?
編集: いくつかの調査の後、段落スタイルの違いは、実際には「\r\n」を印刷した改行が原因であることが判明しました。それを「\ n」に変更すると、間隔の問題が解決しました。