logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

iOS - sizeWithFont 메소드 deprecated와 sizeWithAttributes

by digipine posted Nov 02, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

글자내용에 따라서 라벨 크기를 미리 정하거나 최대크기를 지정해놓고 사이즈를 동적으로 설정 할때 많이 사용한
sizeWithFont 가 iOS 7 에서 Deprecated 됨으로 다른 메소드로의 변경이 필요하다

-(CGSize)sizeWithFont:(UIFont *)font NS_DEPRECATED_IOS(2_0, 7_0, "Use -sizeWithAttributes:");

정의를 보면 sizeWithAttributes 등 다른것으로 바꾸라고 한다...
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;
}
 
TAG •

List of Articles
No. Subject Author Date Views
52 [swift 4] 변경 사항 정리 file 엉뚱도마뱀 2018.07.23 978
51 [Swift 3] TCPIP Socket 통신 클래스 소스 코드 및 사용법 digipine 2017.11.02 4381
50 [Swift 3] HTTP Request 사용하기, 클래스 소스코드 및 사용법 digipine 2017.11.02 8816
49 [swfit 4] 스위프트 Swift 동시성 동기화 정리 엉뚱도마뱀 2018.09.06 1260
48 [Objective-C] NSOperation과 NSOperationQueue를 사용하는 방법 - 설명 및 예제 엉뚱도마뱀 2018.03.14 3737
47 [Objective C] NSString 앞뒤 공백 문자 및 줄바꿈 문자 제거 digipine 2017.11.02 1556
46 [macOS] 현재 사용 중인(열려있는) 포트 확인하고 Close 하기 digipine 2022.10.24 110
45 [MacOS] Terminal 에서 zsh compinit: insecure directories 경고 제거하기 lizard2019 2021.04.30 512
44 [macOS] Sandbox 정책 극복기 Accessing Security Scoped Resource file digipine 2017.11.02 1601
43 [MacOS, Swift] 스크롤뷰, NSScrollView 사용법 엉뚱도마뱀 2018.11.01 1167
42 [macOS, iOS] 개발자 정보 확인하는 명령어 digipine 2023.03.23 51
41 [iOS] 개발자를 위한 iOS 15의 새로운 기능 file digipine 2021.11.04 419
40 [iOS] Audio Session Setting digipine 2021.11.26 430
39 [iOS/Objective-C] __weak, __block 사용법 digipine 2021.02.16 4620
38 [iOS/macOS] 사설 인증서를 사용한 SSL HTTPS 통신 시 우회처리 digipine 2021.07.06 2045
37 [iOS, MacOS] Singleton 싱글톤 패턴 사용하기 2 digipine 2017.11.02 996
36 [iOS, MacOS] NSNotification, NSNotificationCenter 사용법 digipine 2017.11.02 1008
35 [iOS, MacOS] NSArray 정렬 Sorting에 대해서 digipine 2017.11.02 567
34 [iOS, MacOS] ATS 보안 정책 가이드 digipine 2017.11.02 536
33 XCode 8 업데이트 후 Code Sign Error 발생 시 해결법 1 digipine 2017.11.02 682
Board Pagination Prev 1 2 3 Next
/ 3