对于Label的长度和高度问题,每次遇到都要写一堆代码来确定其bounds,所以写成了类别方便使用。这里做个记录,不多说直接上代码。
创建类别-->UILabel+Frame
.h中
/**宽度不变,自动拉伸高度*/
- (void)contentFitHeight;
/**高度不变,适应自字体的宽度*/
- (void)contentFitWidth;
.m 中
- (void)contentFitHeight {
/**(可用)方法太蠢:废弃*/
// self.numberOfLines = 0;
// CGSize size = CGSizeMake(self.frame.size.width,CGFLOAT_MAX);
// NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
// paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
// NSDictionary *attributes = @{NSFontAttributeName:self.font};
// CGSize newSize = [self.text boundingRectWithSize:size options:NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
// self.bounds = CGRectMake(0, 0, newSize.width, newSize.height);
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 0)];
label.text = self.text;
label.font = self.font;
label.numberOfLines = 0;
[label sizeToFit];
CGFloat height = label.frame.size.height;
self.numberOfLines = 0;
self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, height);
}
- (void)contentFitWidth {
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, CGFLOAT_MAX, 0)];
label.text = self.text;
label.font = self.font;
[label sizeToFit];
CGFloat width = label.frame.size.width;
self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, width, self.frame.size.height);
}
起初用的是设置属性的方法,通过方法得到Label的宽高并进行frame的修改。
后来学习别人代码时候发现更好的方法:就是新创建一个Label来得到宽高,很简便。
学无止境,做个记录
2017-01-09-SXH
网友评论