我正在使用Loren Brichter's Fast Scrolling script的稍微定制版本,我遇到问题,如果单元格中的标签到达单元格的末尾,则不会停止。当编程表以标准方式查看时,如果textLabels
或detailTextLabels
太长,它们会自动切断并在字符串末尾应用三个点以保持在单元格内。
我想做同样的事情,但我不知道如何实现它。这是我在向表格视图单元格添加文本时使用的代码:
CGPoint t;
CGPoint d;
t.x = feedImage.size.width + 10 + 12;
t.y = 20;
[textLabel drawAtPoint:t withFont:textLabelFont];
d.x = feedImage.size.width + 10 + 12;
d.y = 39;
[detailTextLabel drawAtPoint:d withFont:detailTextLabelFont];
答案 0 :(得分:1)
关注this tutorial。无缝地工作。
答案 1 :(得分:0)
您可以以编程方式找出(使用大约字符宽度),这将是最后两个/三个可见字符。然后删除剩余的字符并自己放三个点!对于大写字符,尝试宽度为16,对于小写字母,宽度为12磅,字体大小为15.通过反复试验找出正确的数字。
确定。这是一个根据字符调整标签高度(给定宽度)的函数。变量“width”是标签的宽度,“tempWidth”是计算的当前行的宽度。您可以修改此函数以返回截断的字符串,并在末尾添加三个点...
#define smallLetterWidth 12
#define capitalLetterWidth 16
-(int) numRowsForString:(NSString *) inputStr width:(int) width{
int j=0;
numRows=1;
int tempWidth = 0;
while(j<[inputStr length]){
if([[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[inputStr characterAtIndex:j]])
tempWidth += capitalLetterWidth;
else
tempWidth += smallLetterWidth;
if(tempWidth>width){
tempWidth = 0;
numRows++;
j--;
}
else if(tempWidth==width)
{
tempWidth = 0;
numRows++;
}
j++;
}
return numRows;
}
更好:What is -[NSString sizeWithFont:forWidth:lineBreakMode:] good for?