2015-03-31 98 views
0

我的UILabel在我的应用程序和文本中,UILabel从互联网中获取所以文本长度会有所不同,所以我想为UILabel添加背景色为黑色但我也希望UILabel的宽度在有小长度的文本将被读取时改变。这是我的代码。设置UILabel宽度根据将随机更改的uilabel.text的长度

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

这就是我如何设置文本到uilabel里面cellForRowAtIndexPath。 这里是我TableViewCell.h

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

这里是我想避免短标题设置背景颜色。

enter image description here

+1

你熟悉'AutoLayout'吗? – Azat 2015-03-31 08:26:04

回答

1

UILabel继承方法

- sizeThatFits: 
- sizeToFit 

做的工作,你想 尽量让第一只

[cell.songtitl sizeToFit]; 

分配文本

+0

它给这个错误“没有可见@interface为'NSString'声明选择器'sizeToFit'” – user2966615 2015-03-31 08:32:28

+0

哎呀,抱歉,更正我的回答 – heximal 2015-03-31 08:37:11

+0

谢谢,但没有变化,仍然显示长度 – user2966615 2015-03-31 08:55:32

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]; 

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

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; 
} 
相关问题