1

我已将其放置UILabel在我的应用程序中,因为我想在文本长度超过特定计数时使用 .... 显示文本。

因为如果文本变长,就会出现设计问题。

请告知使用哪个功能。

4

7 回答 7

5

试试这个

yourLabel.lineBreakMode=UILineBreakModeTailTruncation;

如果您从界面生成器添加您的 UILabel,您可以直接执行此操作。选择UILabel 并在Attriubtes Inspector => Label section=> Line Breaks的Utilities列中设置Truncate Tail

于 2012-10-09T06:11:22.020 回答
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;

}

在您的 UILable 上添加“字符串”。

于 2012-10-09T06:27:51.030 回答
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在将字符串传递给函数之前。

于 2012-10-09T06:57:12.730 回答
0

您可以使UILable尺寸(长度/宽度)动态化,

或者

您可以UITextView禁用编辑,因此如果有长文本,它将是可滚动的。

于 2012-10-09T06:10:19.580 回答
0

根据您分享的信息,我认为这autoshrink可能linebreakermode是根本原因。IT 是试图在指定框架中显示内容的属性,它将减小并调整字体大小

解决问题的2种方法

  • 根据需求调整属性
  • 增加标签的帧大小(通过查找大小以编程方式)
  • 也看边缘插图
于 2012-10-09T06:11:31.330 回答
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。最好的方法..它对我有用。

于 2012-10-09T06:28:12.870 回答
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;
            }
        }
    }
于 2012-10-09T06:55:09.887 回答