我已将其放置UILabel
在我的应用程序中,因为我想在文本长度超过特定计数时使用 .... 显示文本。
因为如果文本变长,就会出现设计问题。
请告知使用哪个功能。
试试这个
yourLabel.lineBreakMode=UILineBreakModeTailTruncation;
如果您从界面生成器添加您的 UILabel,您可以直接执行此操作。选择UILabel 并在Attriubtes Inspector => Label section=> Line Breaks的Utilities列中设置Truncate Tail
试试这个会对你有帮助。
NSString *string=YourString;
int size=[YourString length];
if (size>21)
{
NSMutableString *string1 = [[NSMutableString alloc]init];
char c;
for(int index = 0;index <20 ;index++)
{
c =[string characterAtIndex:index];
[string1 appendFormat:@"%c",c];
}
[string1 appendFormat:@"..."];
string=string1;
}
在您的 UILable 上添加“字符串”。
#define EXCEEDED_LENGTH 8
- (NSString *) checkStringLength:(NSString *)str
{
if(str.length >= EXCEEDED_LENGTH)
{
return [NSString stringWithFormat:@"%@...",[str subStringToIndex:EXCEEDED_LENGTH-1]];
}
return str;
}
yourLabel.text = [self checkStringLength:@"Hello World !!"];
类似输出Hello Wo...
为了更好的输出,您可以trim
whitespaces
在将字符串传递给函数之前。
您可以使UILable
尺寸(长度/宽度)动态化,
或者
您可以UITextView
禁用编辑,因此如果有长文本,它将是可滚动的。
根据您分享的信息,我认为这autoshrink
可能linebreakermode
是根本原因。IT 是试图在指定框架中显示内容的属性,它将减小并调整字体大小
解决问题的2种方法
CGSize constraint = CGSizeMake(690.0, 2000.0);
CGSize size_txt_overview1 = [[headItemArray objectAtIndex:k] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:18] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
UILabel *lbl_headitem = [[UILabel alloc]initWithFrame:CGRectMake(3,h, 690, size_txt_overview1.height)];
lbl_headitem.numberOfLines=0;
请限制您的UILabel
宽度和高度CGSize
。最好的方法..它对我有用。
这是 UILabel 类别的一种方法
-(void)setTruncatedTextWithDotsIfNeeded:(NSString *)text
{
float fullTextWidth = [text sizeWithFont:self.font].width;
float labelWidth = self.frame.size.width;
if(fullTextWidth<=labelWidth){
[self setText:text];
return;
}
NSString *dots = @"…";
float dotsWidth = [dots sizeWithFont:self.font].width;
NSRange fullRange = [text rangeOfString:text];
for(int i = fullRange.length; i >= fullRange.location; i--){
NSRange currentRange;
currentRange.location = 0;
currentRange.length = i;
NSString *partialText = [text substringWithRange:currentRange];
float partialTextWidth = [partialText sizeWithFont:self.font].width;
if(partialTextWidth + dotsWidth <= labelWidth){
[self setText:[NSString stringWithFormat:@"%@...",partialText]];
return;
}
}
}