一、前言
二、之前的Category方法#pragma mark - 计算字符串尺寸
/**
* 计算字符串高度 (多行)
*
* @param width 字符串的宽度
* @param font 字体大小
*
* @return 字符串的尺寸
*/
- (CGSize)heightWithWidth:(CGFloat)width andFont:(CGFloat)font {
NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:font]};
CGSize size = [self boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:(NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin) attributes:attribute context:nil].size;
return size;
}
/**
* 计算字符串宽度
*
* @param height 字符串的高度
* @param font 字体大小
*
* @return 字符串的尺寸
*/
- (CGSize)widthWithHeight:(CGFloat)height andFont:(CGFloat)font {
NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:font]};
CGSize size = [self boundingRectWithSize:CGSizeMake(MAXFLOAT, height) options:(NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin) attributes:attribute context:nil].size;
return size;
} 三、原因iOS9的字体大小与之前的版本字体大小不一样。 起码, 在systemFont下是这样。
四、解决方法在label初始化的时候添加如下函数: adjustsFontSizeToFitWidth 举例如下: - (UILabel *)priceLabel {
if (!_priceLabel) {
_priceLabel = [[UILabel alloc] init];
_priceLabel.font = H16;
_priceLabel.textColor = UIColorFromRGB(0xE71414);
_priceLabel.textAlignment = NSTextAlignmentRight;
[_priceLabel adjustsFontSizeToFitWidth];
}
return _priceLabel;
} 在布局的时候不用考虑宽度,如下: [self.priceLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(-10);
make.centerY.equalTo(weakSelf.nameLabel);
make.height.equalTo(21);
}]; 五、完事著作权归作者所有 |
|