Objective c UITextView,行号未对齐

Objective c UITextView,行号未对齐,objective-c,ios,nsstring,uitextview,Objective C,Ios,Nsstring,Uitextview,我有一个UITextView,我正在使用它来显示文本。沿着侧面,我有一个用于显示行号的UITableView。尝试将行号与文本行对齐时会出现问题。以下是问题的屏幕截图: 例如,第7行应该向下移动,因为它不在新行的开头。我认为问题在于文本换行时的间距,但我不确定 因此,对于UITableView,我创建的单元格数量与文本行数量相同。然后使用以下方法拉伸单元格,使其高度与每行文本相同: - (CGFloat)tableView:(UITableView *)tableView heightForRo

我有一个UITextView,我正在使用它来显示文本。沿着侧面,我有一个用于显示行号的UITableView。尝试将行号与文本行对齐时会出现问题。以下是问题的屏幕截图: 例如,第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在顶部还有一个空白单元格,因此我可以将第一个单元格与行号与第一行文本对齐


我尝试了多种方法来处理间距,但似乎没有一种能解决这个问题。任何帮助都将不胜感激

我有点不明白你在问什么


你是说你有文本,然后在它旁边有一个表视图,你想把它们排成一行吗?

我认为问题在于你传递给sizeWithFont的大小。您正在将宽度设置为textView的宽度。这实际上有点太宽了。文本视图实际上有一点空白。尝试从宽度中减去几个点。此外,您处理的是属性文本,而不是纯字符串。您应该了解计算NSAttribute字符串高度的方法


你发布的代码中的最后一件事。每次调用heightForRowAtIndexPath时,您都会拆分_codeView.text:。那太糟糕了。您应该这样做一次并保存字符串。这个方法叫很多。这是大量冗余的字符串拆分。

仅供参考-这不是答案。你应该将此作为对问题的评论发布。这正是问题所在。谢谢你的建议和优化技巧。现在行号很有魅力。很高兴它起了作用。我很好奇-是宽度、属性文本还是两者都有?宽度。我需要在每侧垫上扣8分。