🔥 한정 프로모션 · 인기 제품 모음

최대 70% 할인
추천템만 빠르게 확인하세요

진테크랩에서 전문 리뷰 기반 인기 제품
놓치기 아까운 할인·프로모션 상품을 정리했습니다.

최대 70% 할인
🎁 프로모션 상품
📝 전문 리뷰 확인
🏆 인기 제품 추천
할인 제품 보러가기 →
놓치면 아쉬운 추천 제품을 한눈에 확인해보세요.

blog_thumbnail_ios_height

아이폰 뿐만 아니라 다른 코딩을 하더라도 컨텐츠 내용에 따라서 높이를 가변으로 설정해야 하는 경우가 간혹 생깁니다.

그렇게 되면 기본적으로 생각하는 문제가 “가로사이즈에 총 몇개의 글자가 들어가며 한글자의 높이는 얼마나 되는가” 입니다.

뭐 자주 쓰이지 않는 부분이라면 하드코딩으로 구현하면 되지만, 은근히 진짜 많이 쓰이게 됩니다.

그리하여 저는 따로 클래스에 메소드를 하나 만들어놓고 메소드 파라미터에다가 Font & FontSize 정보와 컨텐츠를 넣으려는

공간의 넓이, 높이의 최대값, 컨텐츠 내용을 던져줍니다.

그러면 만들어놓은 메소드에서 계산을 하여 Height값인 높이를 리턴(Return)시켜 주게 됩니다.

+ (CGSize)dataSize:(NSString *)string withContentSize:(CGSize)size font:(UIFont *)font {

    CGSize maxSize = CGSizeMake(size.width, 1000);

    // 1000은 최대 높이를 말합니다. 1000을 초과하게 되면 스크롤이 생겨버립니다.

    CGSize dataHeight = [string sizeWithFont:font constrainedToSize:maxSize 
                                         lineBreakMode:UILineBreakModeCharacterWrap];

    CGSize resultSize = CGSizeMake(dataHeight.width, dataHeight.height+30);

    // dataHeight.height에 30을 더해준 이유는 상황에 따라 길이가 살짝 짧게 나올 수도 있기 때문에

    // 여유길이 30픽셀을 추가합니다.

    // 상황에따라 더한 숫자를 없애주거나 더 많이 줘도 관계없습니다.


    return resultSize;
}

위와 같이 클래스 메소드로 활용하여 사용합니다.

어짜피 높이값만 알아내면 되기때문에 구지 인스턴스로 만들 필요가 없으니깐요^.^

+ (CGSize)dataSize:(NSString *)string withContentSize:(CGSize)size font:(UIFont *)font;

위 선언한 메소드에 대해서 자세히 설명하겠습니다.

1. 클래스 메소드이기때문에 맨 앞에 +를 붙였습니다.

2. 반환값(Return)은 CGSize로 넘겨줍니다. (CGSize는 Width 와 Height를 가지고 있습니다)

3. 총 3개의 파라미터(매개변수)를 넘겨줘야합니다. ( (NSString *)string, (CGSize)size, (UIFont *)font

   – (NSString *)string : 화면에 띄울 컨텐츠의 내용을 전달합니다.

   – (CGSize *)size : 내가 넣을 공간의 사이즈를 전달합니다. (size로 받아왔지만 실제로는 width값만 사용하게 됩니다.)

   – (UIFont *)font : 해당 화면(예:UITextView)에서 사용하고 있는 font값을 전달합니다.

4. 반환(Return)받은 Height값을 이용하여 해당 화면 Height에 적용을 시킵니다.

사용방법 끝!

하면서 궁금한 사항이 생긴다면 댓글을 달아주세요.

반응이 좋다면 샘플프로젝트 만들어서 제공하도록 하겠습니다 ^.^

xcode-hero

By Jin

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다