テキストを表示するために使用している UITextView があります。横に、行番号を表示するために使用している UITableView があります。この問題は、行番号をテキストの行に揃えようとしたときに発生します。問題のスクリーンショットは次のとおりです: https://www.dropbox.com/s/7sjqm4nrsqm6srh/Screen%20Shot%202012-10-11%20at%209.16.58%20PM.png たとえば、7 行目を下に移動する必要があります。新しい行の先頭ではないためです。問題は、テキストの行が折り返されるときの間隔に対処する必要があると思いますが、よくわかりません。
したがって、UITableView では、テキスト行と同じ量のセルを作成しています。次に、次のメソッドを使用してセルの高さがテキストの各行と同じになるようにセルを引き伸ばします。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
int i = indexPath.row;
if (i == 0) {
return 10;
}
UIFont *font = _codeView.font;
NSArray *strings = [_codeView.text componentsSeparatedByString:@"\n"];
NSString *tempString = [strings objectAtIndex:i-1];
if (([strings objectAtIndex:i-1] == @"\n") | ([[strings objectAtIndex:i-1] length] == 0) ) {
tempString = @"hi";
}
CGSize stringSize = [tempString sizeWithFont:font constrainedToSize:CGSizeMake(_codeView.bounds.size.width, 9999) lineBreakMode:NSLineBreakByWordWrapping];
CGFloat height = stringSize.height;
return height;
}
_codeView は、コードを表示するために使用している UITextView です。行番号を表示する UITableView の上部にも 1 つの空白セルがあるため、最初のセルと行番号をテキストの最初の行に揃えることができます。
間隔を調整する方法を複数試しましたが、どれも問題を解決していないようです。どんな助けでも大歓迎です。