您的位置:首页 > 产品设计 > UI/UE

IOS 计算UILable字符串高度

2015-05-28 22:05 344 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: