【问题标题】:uilabel crash when having a lot of text content有大量文本内容时 uilabel 崩溃
【发布时间】:2012-08-03 02:04:33
【问题描述】:

我在设置内容较大的 UILabel 时遇到问题,比如 20,000 字。我通过这种方法计算 UILabel 的大小:

 CGSize labelSize = [myLabel.text sizeWithFont:myLabel.text.font 
                                                            constrainedToSize:CGSizeMake(400, CGFLOAT_MAX) 
                                                                lineBreakMode:UILineBreakModeWordWrap];

显示标签时总是崩溃。

我不知道为什么,但我用 UITextView 替换它并解决了问题。

有人知道这是什么原因吗?谢谢!

【问题讨论】:

    标签: text crash uilabel


    【解决方案1】:
    float desiredHeight = 50.0;
    NSString *yourText = @\"This is some\nmultiline text\nthat you want to fit in your frame.\";
    CGRect frame = CGRectMake(30.0, 30.0, 250.0, desiredHeight);
    int originalFontSize = 30; // let's say
    UILabel *label = [[UILabel alloc] initWithFrame:frame];
    label.font = [UIFont boldSystemFontOfSize:originalFontSize];
    
    frame.size.height = 3000.0; // just make sure it's big enough
    CGSize result = [yourText sizeWithFont:label.font constrainedToSize:frame.size lineBreakMode:UILineBreakModeWordWrap];
    int newFontSize = (desiredHeight / result.height) * (float)originalFontSize;
    label.font = [UIFont boldSystemFontOfSize:newFontSize];
    label.numberOfLines = 0;
    
    label.text = yourText;
    
    [self.view addSubview:label];
    

    试试这个并调整字体。还要调整行号。我希望它可以解决你的问题

    【讨论】:

      【解决方案2】:

      也许做这样的事情会更好:

      UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0.0, 0.0, self.view.frame.size.width, 0.0)];
      [label setText: @"your text"];
      [label sizeToFit];
      
      CGRect labelFrame = label.frame;
      labelFrame.size.height = label.contentSize.height;
      label.frame            = labelFrame;
      
      [self.view addSubview: label];
      

      现在你可以添加文本,它的高度将由 xcode 计算

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多