IOS 计算UILable字符串高度
IOS7 之前
截取了部分
@interface ZGViewCell ()
@property (nonatomic, strong) UILabel *nameLable;
@end
- (UILabel *)nameLable{
if (_nameLable == nil) {
_nameLable = [[UILabel alloc] init];
[self.contentView addSubview:_nameLable];
// _nameLable.backgroundColor = [UIColor redColor];
// 默认字体是17,会出现 ”···“
_nameLable.font = [UIFont fontWithName:@"Arial" size:14];
}
return _nameLable;
}
// 位置
- (void)settingFrame{
CGFloat padding = 10;
// 图标
CGFloat iconX = padding;
CGFloat iconY = padding;
CGFloat iconW = 30;
CGFloat iconH = 30;
self.iconImage.frame = CGRectMake(iconX, iconY, iconW, iconH);
// 姓名
UIFont *nameFont = [UIFont fontWithName:@"Arial" size:14.0f];
CGSize nameFrame = [self.statuses.name sizeWithFont:nameFont constrainedToSize:CGSizeMake(MAXFLOAT, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
CGFloat nameX = CGRectGetMaxX(self.iconImage.frame) + padding;
CGFloat nameY = (self.iconImage.frame.size.height - nameFrame.height) * 0.5 + padding;
self.nameLable.frame = CGRectMake(nameX, nameY, nameFrame.width, nameFrame.height);
}
IOS 7 苹果在UIStringDrawing.h中增加了很多方法
与上面对应的
/** boundingRectWithSize计算给定文本字符串所占的区域
返回值是一个x,y = 0的CGRect
如果要计算多行的准确高度,需要传入NSStringDrawingUsesLineFragmentOrigin选项
dict用于指定字体的相关属性的字典,UIKit框架中的第一个头文件
*/
// 位置
- (void)settingFrame{
NSDictionary *nameDict = @{NSFontAttributeName: [UIFont systemFontOfSize:14]};
CGRect nameFrame= [str boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:nameDict context:nil];
nameFrame.origin.x = CGRectGetMaxX(self.iconImage.frame) + padding;
nameFrame.origin.y = (self.iconImage.frame.size.height - nameFrame.height) * 0.5 + padding;
self.nameLable.frame = nameFrame;
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。