我的应用程序和文本中有一个UILabel,因为UILabel是从互联网上获取的,因此文本长度会有所不同所以我想为UILabel添加背景颜色为黑色,但我还希望UILabel的宽度在有小的时候改变长度文本将在其中获取。这是我的代码。
cell.songtitl.text = [[rssData objectAtIndex:indexPath.row]title];
这就是我在cellForRowAtIndexPath中将文本设置为uilabel的方法。 这是我的TableViewCell.h
@property (weak, nonatomic) IBOutlet UILabel *songtitl;
这是我想通过在短标题上设置背景颜色来避免的。
答案 0 :(得分:1)
答案 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;
}