当我draw
text
PDF
truncate
到specific width
到NSString *strText12 = @"HASDHADH skjdfhhs HKSJDHF.;; []'.hfkjhsfS SDHJHFSH jsfsjdfsn eiwj NJSDSJDF SDLKJJ sfkjsj wreoiwuowu 87243 7298 72jsdj h@#$$$!@$$";
if (strText12.length > 110 ) {
strText12 = [strText12 substringToIndex:110];
strText12 = [strText12 stringByAppendingFormat:@"...."];
}
CGContextSelectFont (aCgPDFContextRef, "Helvetica", 12, kCGEncodingMacRoman);
CGContextSetTextDrawingMode (aCgPDFContextRef, kCGTextFill);
CGContextSetRGBFillColor (aCgPDFContextRef, 0, 0, 0, 1);
const char *text1 = [strText12 UTF8String];
CGContextShowTextAtPoint (aCgPDFContextRef, 10,50.0, text1, strlen(text1));
这两者之间的差异时,NSString *strText = @"hasdhadh skjdfhhs hksjdhf.;; []'.hfkjhsfs sdhjhfsh jsfsjdfsn eiwj njsdsjdf sdlkjj sfkjsj wreoiwuowu 87243 7298 72jsdj h@#$$$!@$$";
if (strText.length > 110 ) {
strText = [strText substringToIndex:110];
strText = [strText stringByAppendingFormat:@"...."];
}
CGContextSelectFont (aCgPDFContextRef, "Helvetica", 12, kCGEncodingMacRoman);
CGContextSetTextDrawingMode (aCgPDFContextRef, kCGTextFill);
CGContextSetRGBFillColor (aCgPDFContextRef, 0, 0, 0, 1);
const char *text = [strText UTF8String];
CGContextShowTextAtPoint (aCgPDFContextRef, 10,10.0, text, strlen(text));
我得不到它。
第一个:
CoreText
第二个:
result
PDF结果:
编辑:即使使用same
{{1}},也是{{1}}。
答案 0 :(得分:0)
一个解决方案可以是:从no
获取upperCase letters
actual string
,现在proportionally
乘以将从original index
移除的35%的计数是110。
NSString *textToDraw = some string
int range = 100;
NSString *strTruncate = textToDraw;
if (strTruncate.length > range ) {
strTruncate = [strTruncate substringToIndex:range];
//NSLog(@"now : %@",strTruncate);
int actualIndex = 0;
int count = [self getNoUpperCaseCharWithString:strTruncate];
if (count>0) {
float minusIndex = (float)count*0.35;
actualIndex = range - (int)minusIndex;
//actualIndex -= 4;
}
else{
actualIndex = range;
}
if (strTruncate.length > actualIndex ) {
textToDraw = [strTruncate substringToIndex:actualIndex];
textToDraw = [strTruncate stringByAppendingFormat:@"..."];
}
//NSLog(@"after : %@",textToDraw);
}
从count
获取upperCase
封string
封信件:
-(int)getNoUpperCaseCharWithString:(NSString *)string
{
int count=0;
for (int i = 0; i < [string length]; i++) {
BOOL isUppercase = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[string characterAtIndex:i]];
if (isUppercase == YES)
count++;
}
return count;
}
编辑:找不到这些准确的解决方案.......