Ios 根据将随机更改的UILabel.text的长度设置UILabel宽度

Ios 根据将随机更改的UILabel.text的长度设置UILabel宽度,ios,objective-c,iphone,uitableview,uilabel,Ios,Objective C,Iphone,Uitableview,Uilabel,我在我的应用程序中有一个UILabel,其中的文本是从internet获取的,因此文本长度会有所不同,因此我想为UILabel添加黑色背景色,但我也希望UILabel的宽度在获取长度较小的文本时发生变化。这是我的密码 cell.songtitl.text = [[rssData objectAtIndex:indexPath.row]title]; 这就是我在CellForRowatineXpath中将文本设置为uilabel的方法。 这是我的TableViewCell.h @property

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

cell.songtitl.text = [[rssData objectAtIndex:indexPath.row]title];
这就是我在CellForRowatineXpath中将文本设置为uilabel的方法。 这是我的TableViewCell.h

@property (weak, nonatomic) IBOutlet UILabel *songtitl;
下面是我想通过设置短标题的背景色来避免的

继承了一些方法

- sizeThatFits:
- sizeToFit
做你想做的工作 试着先走一步

[cell.songtitl sizeToFit];

分配文本后

使用此代码根据文本长度设置可编辑的宽度

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

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

我在整个项目中都在使用这些代码。它们动态地为您提供高度和宽度。希望能有帮助

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

您是否熟悉
自动布局
?它给出了以下错误“对于'NSString'没有可见的@interface声明选择器'sizeToFit'”