如何在设置文本后获得正确的UILabel宽度?

时间:2015-05-27 12:06:23

标签: ios swift uilabel

我正在获取UILabel的宽度[在文本设置之后]:

myUILabel.frame.width

但它的宽度始终相同,无论它是否包含字符串:"Hello."或字符串:"Hello everyone on this planet."。但是UILabel需要有更大的宽度和第二个String。

3 个答案:

答案 0 :(得分:37)

试试myUILabel.intrinsicContentSize()。当然,请确保先设置字体。

答案 1 :(得分:0)

您应该使用[label sizeToFit]

标签上的

sizeToFit会拉伸标签以容纳文字。

另一种解决方案是计算字符串的宽度,并根据字符串宽度重新构建标签。

对于第二种解决方案,您可以将字符串的大小计算为

CGSize strSize = CGSizeZero;

CGSize minSize = CGSizeZero;

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
{
    NSAttributedString *attributedText = [[[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: label.font}] autorelease];
    CGRect rect = [attributedText boundingRectWithSize:constraintSize
                                               options:NSStringDrawingUsesLineFragmentOrigin
                                               context:nil];
    strSize = rect.size;
}
else
{
    strSize = [text sizeWithFont:label.font constrainedToSize:constraintSize];
}

答案 2 :(得分:0)

尝试

awk -v id="$your_shell_variable" '
BEGIN{ FS=OFS="@@@" }
NR>1{
  print prev
}
{
  prev=$0
}
END{
  num=split(prev,array,"@@@")
  if(array[1]==id && array[num]=="SUCCESS"){
    array[num]="FAILURE"
  }
  for(i=1;i<=num;i++){
    val=(val?val OFS:"")array[i]
  }
  print val
}
'  Input_file  > temp && mv temp Input_file