선형 메서드가 너무 느리기 때문에 code found here을 이진 알고리즘으로 변환하려고합니다. 나는 실용적인 구현을 가지고 있지만, 내가 얻지 못하는 결과가 정확하지 않기 때문에 (즉, 너비가 20 픽셀 정도를 더하거나 뺄 때, 나는 같은 길이로 절단된다. 문자열 .. 조금 더 정확해야하고 더 가까운 컷을 가져야합니다.) :NSString을 너비로 자릅니다
-(NSString*)stringByTruncatingToWidth:(CGFloat)width withFont:(UIFont*)font addQuotes:(BOOL)addQuotes
{
int min = 0, max = self.length, mid;
while (min < max) {
mid = (min+max)/2;
NSString *currentString = [self substringWithRange:NSMakeRange(min, mid - min)];
CGSize currentSize = [currentString sizeWithFont:font];
if (currentSize.width < width){
min = mid + 1;
} else if (currentSize.width > width) {
max = mid - 1;
} else {
min = mid;
break;
}
}
return [self substringWithRange:NSMakeRange(0, min)];
}
누구나 그걸 잘못 생각할 수 있습니까? (이 카테고리의 방법, 그래서 self
가있는 NSString입니다
왜 직접 계산해야합니까? 끈으로 뭐하고 있니? 레이블 안에 만 표시하면 레이블을 자르도록 구성 할 수 있습니다. 잘라내기를 방지하기 위해 레이블에 텍스트를 맞추기 위해 글꼴 크기를 조금 줄이는 것도 허용 할 수 있습니다. –
나는 그림을 그렸고 끝 부분에 타원을 추가해야합니다. 나는 또한 주위에 따옴표를 감싸고 싶다. 그래서 drawInRect withLineBreakMode는 끝 인용문을자를 것이기 때문에 여기에 옵션이 없다 .. – Snowman
위의 링크를위한 Thx 멋쟁이. 미친 듯이 내 문제 해결 방안을 찾았지만 마침내 찾았다. 너의 포스트에서 .. – Rendy