2012-10-12 2 views
2

텍스트를 표시하는 데 사용하는 UITextView가 있습니다. 측면을 따라 나는 줄 번호를 표시하는 데 사용하고있는 UITableView가 있습니다. 줄 번호를 텍스트 줄에 맞추려고 할 때 문제가 발생합니다. 다음은 문제의 스크린 샷입니다. https://www.dropbox.com/s/7sjqm4nrsqm6srh/Screen%20Shot%202012-10-11%20at%209.16.58%20PM.png 예를 들어, 7 행은 새 행의 시작 부분에 있지 않으므로 아래로 이동해야합니다. 문제는 텍스트 줄이 줄 바꿈 될 때 간격을 처리해야한다고 생각하지만 확실하지 않습니다.UITextView, 줄 번호가 맞지 않음

따라서 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는 I 코드를 표시하는 데 사용하고있는 UITextView이다. 줄 번호를 표시하는 UITableView는 첫 번째 줄을 첫 줄에 맞춰 첫 번째 셀을 정렬 할 수 있도록 맨 위에 빈 셀 하나를 가지고 있습니다.

간격을 사용하여 여러 가지 재생 방법을 시도했지만 그 중 아무 것도 문제를 해결하지 못하는 것 같습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

1

문제는 sizeWithFont에 전달한 크기와 관련이 있다고 생각합니다. 너비를 textView의 너비로 설정합니다. 실제로는 조금 넓은 편입니다. 텍스트보기에는 실제로 약간의 마진이 있습니다. 너비에서 몇 점을 뺍니다. 또한, 당신은 속성이있는 텍스트를 다루고 있으며, 평범한 문자열은 다루지 않습니다. NSAttributedString의 높이를 계산하는 방법을 살펴보아야합니다.

마지막으로 게시 한 코드가 하나 있습니다. heightForRowAtIndexPath :를 호출 할 때마다 _codeView.text가 분할됩니다. 그 나쁜. 이 작업을 한 번 수행하고 문자열을 저장해야합니다. 이 방법을 많이라고합니다. 그것은 많은 중복 문자열 분할입니다.

+0

그건 정확히 문제였습니다. 최적화 팁을 주셔서 감사합니다. 이제 라인 번호는 매력처럼 작동합니다. – user1163876

+0

도움이 되니 기쁩니다. 나는 그것이 호기심인지 - 너비, 속성이있는 텍스트 또는 둘 모두 였는가? – rmaddy

+0

폭입니다. 나는 양쪽에 패딩을하기 위해 8 점을 벗어날 필요가 있었다. – user1163876

0

나는 당신이 무엇을 요구하고 있는지에 대해 약간 혼란 스럽다.

텍스트가 있고 그 옆에 테이블 뷰가 있고 두 개를 연결하려고한다는 말입니까?

+2

참고 - 이것은 답변이 아닙니다. 이 질문에 대한 의견으로 게시해야합니다. – rmaddy

관련 문제