根据随机变化的uilabel.text长度设置UILabel宽度

时间:2015-03-31 08:16:24

标签: ios objective-c iphone uitableview uilabel

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

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

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

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

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

enter image description here

3 个答案:

答案 0 :(得分:1)

UILabel继承了方法

- sizeThatFits:
- sizeToFit

完成你想要的工作 尝试先制作

[cell.songtitl sizeToFit];
分配文本后

答案 1 :(得分:1)

根据文字长度

使用此代码设置UILable宽度
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];

我希望这段代码对你有用。

答案 2 :(得分:0)

我正在使用这些代码我的所有项目。这些动态地给你高度和宽度。希望它有所帮助

+ (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;
}