UILabel - 当文本长度超过一定长度时显示....

时间:2012-10-09 06:04:51

标签: iphone ios nsstring uilabel

我已将UILabel放在我的应用程序中,因为我希望在文本长度超过特定数量时显示文本....

因为如果文本更长,则会产生设计问题。

请告知使用哪种功能。

7 个答案:

答案 0 :(得分:5)

试试这个

yourLabel.lineBreakMode=UILineBreakModeTailTruncation;

如果要从界面构建器添加UILabel,可以直接进行。 选择您的UILabel,并在 Attriubtes Inspector =>的实用工具列中标签部分=> 换行设置截断尾巴

答案 1 :(得分:2)

试试这会对你有所帮助。

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;

}

在UILabel上添加“string”。

答案 2 :(得分:1)

#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

答案 3 :(得分:0)

要么UILable尺寸(长度/宽度)动态,

或者

你可以UITextView使用编辑禁用,所以如果有长文本,它将是可滚动的。

答案 4 :(得分:0)

根据您分享的信息,我认为autoshrinklinebreakermode可能是根本原因.IT是尝试显示指定框架中内容的属性,该内容将减少和调整字体大小

解决问题的两种方法

  • 根据要求调整属性
  • 增加标签的框架大小(以编程方式查找大小)
  • 也看边缘插页

答案 5 :(得分:0)

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宽度和高度。最好的方式..它对我有用。

答案 6 :(得分:0)

这是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;
            }
        }
    }