내가 그 라인 UITextView 배경 줄을 텍스트와 정렬하는 방법?
CGContextBeginPath(context);
CGContextSetStrokeColorWithColor(context, self.horizontalLineColor.CGColor);
CGContextSetLineWidth(context, kDashedBorderWidth);
CGContextSetLineDash(context, 0, kDashedLinesLength, kDashedCount) ;
CGFloat baseOffset = 9.0f + self.font.descender;
CGFloat boundsX = self.bounds.origin.x;
CGFloat boundsWidth = self.bounds.size.width;
NSInteger firstVisibleLine = MAX(1, (self.contentOffset.y/self.font.lineHeight));
NSInteger lastVisibleLine = ceilf((self.contentOffset.y + self.bounds.size.height)/self.font.lineHeight);
for (NSInteger line = firstVisibleLine; line <= lastVisibleLine; ++line)
{
CGFloat linePointY = (baseOffset + (self.font.lineHeight * (float)line));
CGContextMoveToPoint(context, boundsX, linePointY);
CGContextAddLineToPoint(context, boundsWidth, linePointY);
}
CGContextClosePath(context);
CGContextStrokePath(context);
그리고 결과를 그리는 데 사용되는 코드는 그림에 표시됩니다 여기 , UITextView의 무승부 배경 라인입니다 시도하고
그것은 그것 GET처럼 보인다 첫 번째 줄은 바르게 표시되지만 다음 줄은 텍스트와 정렬되지 않습니다.
내가 여기에서 무엇을 그리워 했습니까? 현지화 설정과 관련이 있습니까?
줄 높이 계산이 꺼져있는 것처럼 보입니다. 첫 번째 줄은 올바르게 정렬 되었기 때문에 처음에는 줄이 그어 지지만 텍스트의 줄 높이가 점선 줄의 줄보다 크기 때문에 줄무늬가 점점 늘어납니다. 먼저 라인 높이에 대한 계산을보고 조정할 것입니다. – garrettmurray
나는'self.font.lineHeight'가 정확한 높이 값을 제공하지 않는 것 같다고 동의한다. – jAckOdE
분명히 UITextView의 내부 렌더링은 라인을 레이아웃하기 위해'lineHeight' 속성을 사용하지 않았습니다. 내부적으로 어떻게 작동 하는지를 모르고 선을 정확하게 그릴 수는 없습니다. –