无论我将行数设置为0还是100,它都不会改变,文本仍然是......最后。我已经尝试过NSLineBreakByWordWrapping,但它只是删除了......并且什么都不做。
UILabel *label = [[UILabel alloc] init];
[cell.contentView addSubview:label];
label.text = myString;
label.frame = CGRectMake(17, 42, 200, 30);
[label sizeToFit];
label.lineBreakMode = NSLineBreakByWordWrapping;
label.numberOfLines = 0;
答案 0 :(得分:3)
使用此
UILabel *label = [[UILabel alloc] init];
label.text = @"myStringsdsdvsvdsdvsdvsdndbndbnbdnbdnbdnpopopoploplklioolnhbfghrmyString";
label.numberOfLines = 0;
label.frame = CGRectMake(0, 50, 320, 568);
[self.view addSubview:label];
label.frame = CGRectMake(0, 42, [self widthForLabel:label withText:label.text], [self height:label withText:label.text]);
label.backgroundColor = [UIColor redColor];
表示动态宽度
-(CGFloat)widthForLabel:(UILabel *)label withText:(NSString *)text
{
if (text.length > 0)
{
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:label.font}];
CGRect rect = [attributedText boundingRectWithSize:(CGSize){label.frame.size.width, CGFLOAT_MAX}
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
return ceil(rect.size.width);
}
return 0;
}
表示动态高度
-(CGFloat)height:(UILabel *)label withText:(NSString *)text
{
if (text.length > 0)
{
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:label.font}];
CGRect rect = [attributedText boundingRectWithSize:(CGSize){label.frame.size.width, CGFLOAT_MAX}
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
return ceil(rect.size.height);
}
return 0;
}
这里的问题是你需要用这样的框架来初始化标签
label.frame = CGRectMake(0, 50, 320, 568);
现在,当您在视图中添加标签时,请计算标签的动态宽度和高度,然后再次设置框架。
希望它能奏效。