글자내용에 따라서 라벨 크기를 미리 정하거나 최대크기를 지정해놓고 사이즈를 동적으로 설정 할때 많이 사용한
sizeWithFont 가 iOS 7 에서 Deprecated 됨으로 다른 메소드로의 변경이 필요하다
-(CGSize)sizeWithFont:(UIFont *)font NS_DEPRECATED_IOS(2_0, 7_0, "Use -sizeWithAttributes:");
정의를 보면 sizeWithAttributes 등 다른것으로 바꾸라고 한다...
7이하 버전에서는 sizeWithFont를 사용하고 그외의 버전에서는
7이하 버전에서는 sizeWithFont를 사용하고 그외의 버전에서는
sizeWithAttributes: 나 boundingRectWithSize:options:attributes:context: 으로
변경이 필요하다.
그래서 버전별 호환을 위해서 사이즈를 리턴해주는 공통함수를 만들어 해당 함수를 사용하게 변경하였다.
//폰트 기준 글자 사이즈 가져오기
-(CGSize)sizeWithText:(NSString*)text font:(UIFont*)font{
CGSize result;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
result = [text sizeWithAttributes:@{NSFontAttributeName:font}];
}else{
result = [text sizeWithFont:font];
}
return result;
}
//폰트와 최대사이즈 지정해서 글자 사이즈 가져오기 - lineBreakMode:NSLineBreakByWordWrapping
-(CGSize)sizeWithText:(NSString*)text font:(UIFont*)font maxSize:(CGSize)maxSize{
return [self sizeWithText:text font:font maxSize:maxSize lineBreakMode:NSLineBreakByWordWrapping];
}
//폰트, 최대사이즈, 줄바꿈 모드로 글자 사이즈 가져오기
-(CGSize)sizeWithText:(NSString*)text font:(UIFont*)font maxSize:(CGSize)maxSize lineBreakMode:(NSLineBreakMode)lineBreakMode{
CGSize result;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
paragraphStyle.lineBreakMode = lineBreakMode;
NSDictionary *attributes = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle};
result = [text boundingRectWithSize:maxSize options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
}else{
result = [text sizeWithFont:font constrainedToSize:maxSize lineBreakMode:lineBreakMode];
}
return result;
}