【问题标题】:setting UILabel width acording to the length of uilabel.text that will change randomly根据将随机变化的 uilabel.text 的长度设置 UILabel 宽度
【发布时间】:2015-06-04 12:10:13
【问题描述】:

我的应用程序中有一个 UILabel,其中的文本 UILabel 是从 Internet 获取的,因此文本长度会有所不同,所以我想为 UILabel 添加背景颜色为黑色,但我也希望 UILabel 的宽度在较小时改变长度文本将在其中获取。这是我的代码。

cell.songtitl.text = [[rssData objectAtIndex:indexPath.row]title];

这就是我在 cellForRowAtIndexPath 中将文本设置为 uilabel 的方式。 这是我的 TableViewCell.h

@property (weak, nonatomic) IBOutlet UILabel *songtitl;

这是我想通过在短标题上设置背景颜色来避免的。

【问题讨论】:

  • 你熟悉AutoLayout吗?

标签: ios objective-c iphone uitableview uilabel


【解决方案1】:

UILabel 继承了方法

- sizeThatFits:
- sizeToFit

做你想做的工作 试着先做

[cell.songtitl sizeToFit];

分配文本后

【讨论】:

  • 它给出了这个错误“'NSString'没有可见的@interface声明选择器'sizeToFit'”
【解决方案2】:

使用此代码根据文本长度设置UILablewidth

NSString *text = @"this is fortesting" ;
UIFont *font = [UIFont systemFontOfSize:10];
CGSize size = [(text ? text : @"") sizeWithFont:font constrainedToSize:CGSizeMake(220, 9999) lineBreakMode:NSLineBreakByWordWrapping];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(46, 200, size.width, size.height)];
label.numberOfLines = 0;
label.textColor = [UIColor grayColor];
label.lineBreakMode = NSLineBreakByWordWrapping;
label.text = (text ? text : @"");
label.font = font;
label.backgroundColor = [UIColor redColor];
[self.view addSubview:label];

希望这段代码对你有用。

【讨论】:

    【解决方案3】:

    我在我的所有项目中都使用这些代码。这些动态地为您提供高度和宽度。希望对你有帮助

    + (CGFloat) calculateHeightForText:(NSString *)str forWidth:(CGFloat)width forFont:(UIFont *)font {
    CGFloat result = 20.0f;
    if (str) {
        CGSize textSize = { width, 20000.0f };
        CGSize size = [str sizeWithFont:font constrainedToSize:textSize lineBreakMode:NSLineBreakByWordWrapping];
        result = MAX(size.height, 20.0f);
    }
    return result;
    }
    
    + (CGFloat) calculateWidthForText:(NSString *)str forHeight:(CGFloat)height forFont:(UIFont *)font {
    CGFloat result = 20.0f;
    if (str) {
        CGSize textSize = { 20000.0f, height };
        CGSize size = [str sizeWithFont:font constrainedToSize:textSize lineBreakMode:NSLineBreakByWordWrapping];
        result = MAX(size.width, 20.0f);
    }
    return result;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-01
      • 2011-06-21
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多