【发布时间】:2011-06-22 22:38:41
【问题描述】:
我有一个 UITextView 显示从 Facebook Connect 加载的 facebook 状态。我正在尝试使 UITextView 只是创建文本的预览。当 UILabel 的文本过多时,我希望它看起来像它。它会像“文本太多......”带有点,但 UITextViews 不这样做。有人知道如何让它工作吗?
【问题讨论】:
标签: iphone uitextview uilabel
我有一个 UITextView 显示从 Facebook Connect 加载的 facebook 状态。我正在尝试使 UITextView 只是创建文本的预览。当 UILabel 的文本过多时,我希望它看起来像它。它会像“文本太多......”带有点,但 UITextViews 不这样做。有人知道如何让它工作吗?
【问题讨论】:
标签: iphone uitextview uilabel
编写一个单独的方法来计算字符串中有多少个字母,如果超过某个预设值,则将其剪切并在末尾附加三个点。
此外,如果您不需要编辑内部信息,请考虑使用 UILabel 而不是 UITextView,因为 UITextView 需要更长的时间来分配和初始化,并且通常比 UILabel 慢。
【讨论】:
+(NSString *)getTruncatedTextForString:(NSString *)inputString withFont:(UIFont *)font withLength:(int)textViewlength
{
CGSize dotSize=[@"..." sizeWithFont:font];
float dotWidth=dotSize.width;
NSString *outputString=@"";
int reqLength=textViewlength-dotWidth;
for(int i=0;i<inputString.length;i++)
{
NSString *tempStr=[outputString stringByAppendingString:[inputString substringWithRange:NSMakeRange(i,1)]];
if([tempStr sizeWithFont:font].width>reqLength)
{
break;
}
else
{
outputString=tempStr;
}
}
NSString *tempStr=[outputString stringByAppendingString:@"..."];
outputString=tempStr;
return outputString;
}
【讨论】:
试试下面的代码。它将在文本视图中显示两个点,其文本超过其框架高度。
if(textview.contentSize.height > textview.frame.size.height)
{
while (textview.contentSize.height > textview.frame.size.height)
{
textview.text = [textview.text substringWithRange:NSMakeRange(0, textview.text.length-1)];
}
textview.text = [textview.text substringWithRange:NSMakeRange(0, textview.text.length-2)];
textview.text= [NSString stringWithFormat:@"%@..",textview.text];
}
只有当我们为 UITextview 相对于该 textview 的字体和字体大小设置正确的高度时,它才有效。
例如,如果字体是 16 号的粗体系统字体,则 textview 的高度应至少为 30。
【讨论】: