//
|
// UILabel+DDKit.m
|
// DDCategory
|
//
|
// Created by DeJohn Dong on 15-3-20.
|
// Copyright (c) 2015年 DDKit. All rights reserved.
|
//
|
|
#import "UILabel+DDKit.h"
|
|
@implementation UILabel (DDKit)
|
|
+ (CGFloat)dd_heightOfText:(NSString *)text fontSize:(CGFloat)fontSize constraintWidth:(CGFloat)width {
|
return [self dd_heightOfText:text fontSize:fontSize constraintWidth:width minimumHeight:0];
|
}
|
|
+ (CGFloat)dd_heightOfText:(NSString *)text fontSize:(CGFloat)fontSize constraintWidth:(CGFloat)width minimumHeight:(CGFloat)height {
|
UIFont *systemFont = [UIFont systemFontOfSize:fontSize];
|
return [self dd_heightOfText:text font:systemFont constraintWidth:width minimumHeight:height];
|
}
|
|
+ (CGFloat)dd_heightOfText:(NSString *)text font:(UIFont *)font constraintWidth:(CGFloat)width minimumHeight:(CGFloat)height {
|
CGFloat finalHeight = 0.0f;
|
CGSize constrainedSize = CGSizeMake(width, CGFLOAT_MAX);
|
CGSize size = CGSizeZero;
|
if ([text respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) {
|
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
|
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
|
NSDictionary *attributes = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle.copy};
|
|
size = [text boundingRectWithSize:constrainedSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
|
} else {
|
#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED <= 60000)
|
size = [text sizeWithFont:font constrainedToSize:constrainedSize lineBreakMode:NSLineBreakByWordWrapping];
|
#endif
|
}
|
finalHeight = ceilf(size.height);
|
|
// check if setup minimum height and final is lower than the minimum height
|
if (height > 0 && finalHeight < height) {
|
finalHeight = height;
|
}
|
return finalHeight;
|
}
|
|
@end
|
|
@implementation UILabel (DDAutoSize)
|
|
- (UILabel *)dd_resizeLabelHorizontal {
|
return [self dd_resizeLabelHorizontal:0];
|
}
|
|
- (UILabel *)dd_resizeLabelVertical {
|
return [self dd_resizeLabelVertical:0];
|
}
|
|
- (UILabel *)dd_resizeLabelVertical:(CGFloat)minimumHeigh {
|
CGRect newFrame = self.frame;
|
CGSize constrainedSize = CGSizeMake(newFrame.size.width, CGFLOAT_MAX);
|
NSString *text = self.text;
|
UIFont *font = self.font;
|
CGSize size = CGSizeZero;
|
if ([text respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) {
|
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
|
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
|
NSDictionary *attributes = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle.copy};
|
|
size = [text boundingRectWithSize:constrainedSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
|
}else{
|
#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED <= 60000)
|
size = [text sizeWithFont:font constrainedToSize:constrainedSize lineBreakMode:NSLineBreakByWordWrapping];
|
#endif
|
}
|
newFrame.size.height = ceilf(size.height);
|
if (minimumHeigh > 0) {
|
newFrame.size.height = (newFrame.size.height < minimumHeigh ? minimumHeigh : newFrame.size.height);
|
}
|
self.frame = newFrame;
|
return self;
|
}
|
|
- (UILabel *)dd_resizeLabelHorizontal:(CGFloat)minimumWidth {
|
CGRect newFrame = self.frame;
|
CGSize constrainedSize = CGSizeMake(CGFLOAT_MAX, newFrame.size.height);
|
NSString *text = self.text;
|
UIFont *font = self.font;
|
CGSize size = CGSizeZero;
|
if ([text respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) {
|
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
|
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
|
NSDictionary *attributes = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle.copy};
|
|
size = [text boundingRectWithSize:constrainedSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
|
}else{
|
#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED <= 60000)
|
size = [text sizeWithFont:font constrainedToSize:constrainedSize lineBreakMode:NSLineBreakByWordWrapping];
|
#endif
|
}
|
newFrame.size.width = ceilf(size.width);
|
if (minimumWidth > 0) {
|
newFrame.size.width = (newFrame.size.width < minimumWidth ? minimumWidth: newFrame.size.width);
|
}
|
self.frame = newFrame;
|
return self;
|
}
|
|
@end
|