如题步骤如下,Label赋值完毕,调用下列代码自动计算Label的宽度:
//这里是默认一行的情况
label.size = [label.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:label.font,NSFontAttributeName, nil]];
//下面修改关联UI控件的frame就好了
特别提示!如果要用到上述的label.size属性,那么必须创建UIView的分类,重写size属性,代码如下:
.h分类中
@property (nonatomic, assign) CGSize size;
.m分类中
- (void)setSize:(CGSize)size
{
CGRect frame = self.frame;
frame.size = size;
self.frame = frame;
}
自动计算Label的高度,有几个注意点:
1.Label的宽度需要固定
2.Label的numberOfLines设置为0,允许换行
3.当计算出Label的动态高度之后,记住要重设Label的Size
4.在适当的位置刷新布局
下面是实现代码:
//动态获取Label高度 - wsx注释
{
//宽度
CGFloat contentW = Label.size.width;
// iOS7以上用以下方法替代过时的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法
CGRect tmpRect = [Label.text boundingRectWithSize:CGSizeMake(contentW, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:Label.font,NSFontAttributeName, nil] context:nil];
// 高度H
CGFloat contentH = tmpRect.size.height;
Label.size = CGSizeMake(contentW, contentH);
}
这样,动态调整Label的高度就完成了;
荆轲刺秦王!