縦書きの実現について
UITextViewを使う
- 行間の設定がわからない→一文字ずつ位置を計算して描画?
- テキストの回転がわからない→地道に一文字ずつ回転?
- ZAttributedStringその他を使う→縦書きのAttributesが無いっぽい!?
- CGContextGetTextPositionを呼んで現在のテキスト位置を得る
- テキスト描画モードを不可視に設定しCGContextSetTextDrawingModeを使う
- CGContextShowTextを呼んでテキストを描画する、テキスト位置にテキストを描画
- CGContextGetTextPositionで最終テキスト位置を決める
- 終端位置から開始位置を差し引いて、テキストの幅を決定
for (int i = 0; i < [paragraphs count]; i++) {
// これから段落文字列を行に分割していく
//NSMutableArray* lines;
NSMutableString* paragraph;
paragraph = [[paragraphs objectAtIndex:i] mutableCopy];
int len = [paragraph length];
if (len > 20) {
// 最大文字数(二十文字)以上は分割しなければいけない
// 20文字目が禁則文字なら20で改行せず、19文字で改行
if ([paragraph characterAtIndex:20] == @"、" || [paragraph characterAtIndex:20] == @"。") {
NSLog(@"%@なので、禁則処理+改行しないと", [paragraph characterAtIndex:20]);
}
[paragraph insertString:@"\n" atIndex:20];
}
[paragraphs replaceObjectAtIndex:i withObject:paragraph];
}
UIWebViewを使う
UIScrollViewを使う
iPad+CoreTextを使う
情報をいろいろ収集
- CoreTextはUIStringDrawingと同じ表示はできねーよって書いて合った
試したこと
NaviControllerでやる→ステータスバーが出入するときに、一緒にずれるのが嫌だ
- ステータスバーが悪い?→解決難しい
- NaviControllerが悪い?→ナビ使わずに
- ナビ使わずに→ビューの上に重ねてしまうとイベントが反応しない。
- ToDo:デバッグでライブラリのどこを実行しているかを突き止める
CGContextScaleCTM(context, 1.0, -1.0);
CGContextSetFont(context, _cgFont);
CGContextSetFontSize(context, _size);
if( _stroke )
CGContextSetTextDrawingMode (context, kCGTextStroke);
else
CGContextSetTextDrawingMode (context, kCGTextFill);
CGAffineTransform transform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
CGContextSetTextMatrix(context, transform);
int count = [string length];
CGGlyph* glyphs = malloc(sizeof(CGGlyph)*count);
for(int i = 0; i < count; i++) {
glyphs[i] = _glyphs[[string characterAtIndex:i]];
}
CGContextShowGlyphsAtPoint(context, point.x, point.y, glyphs, count);
free(glyphs);
最終更新:2010年07月20日 11:41