我正在尝试确定UILabel在使用NSAttributedString为标签约束到最大宽度时所需的合适高度。
我遇到的问题是当我在UILabel末尾包含一个小图像时高度计算已关闭。
这就是我正在做的事情。
@property (nonatomic, weak) IBOutlet UILabel *fullName;
// Append the First and Last Name
NSMutableAttributedString *fullName = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@ %@", firstName, lastName] attributes:@{ NSFontAttributeName : [UIFont systemFontOfSize:16], NSForegroundColorAttributeName : fontColor }];
// Append image
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = [UIImage imageNamed:@"starImage"];
NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment];
[fullName appendAttributedString:attrStringWithImage];
// Set the label AttributedText
self.fullName.attributedText = fullName;
稍后我调用辅助方法来确定此fullName标签所需的高度。
- (CGFloat)heightOfLabel:(UILabel *)label withMaxWidth:(CGFloat)width {
CGSize boundingSize = CGSizeMake(width, FLT_MAX);
return [label.text boundingRectWithSize:boundingSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:label.font}
context:nil].size.height;
}
这就是问题所在,因为我附加的小图片没有被考虑在内。我甚至尝试了label.attributedText
而不是label.text
而没有结果。
有什么想法或建议吗?感谢。
答案 0 :(得分:0)
我不知道为什么boundingRectWithSize:options:attributes:context:不起作用,但是更简单的大小方法可以。这确实考虑了图像的大小。
CGSize *stringSize = fullName.size;