iOS开发:UILabel自适应高度/宽度

对于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

你可能感兴趣的:(iOS开发:UILabel自适应高度/宽度)