iOS 에서 UILabel 높이 를 동적 으로 조정 하 는 몇 가지 방법

간단 한 소개
UILabel 클래스 는 읽 기 전용 텍스트 보 기 를 실현 합 니 다.이 종 류 를 사용 하여 하나 이상 의 줄 정적 텍스트 를 그 릴 수 있 습 니 다.예 를 들 어 다른 부분의 사용자 인터페이스 를 사용 할 수 있 습 니 다.UILabel 류 는 간단 하면 서도 복잡 한 스타일 라벨 의 텍스트 를 지원 하 며,라벨 이 그림 자 를 사용 하거나 하 이 라 이 트 를 끌 었 는 지 등 외관 도 제어 할 수 있 습 니 다.
iOS 프로그램 에서 볼 수 있 고 만 질 수 있 는 것 은 모두 UIView 의 하위 클래스 입 니 다.UILabel 은 텍스트 정 보 를 표시 하 는 탭 보기 클래스,즉 UIView 의 하위 클래스 입 니 다.
다음은 UILabel 에 관 한 공식 사이트 입 니 다.https://developer.apple.com/reference/uikit/uilabel
머리말
때때로 우 리 는 UILabel 내부 의 글꼴 형식(글꼴 크기,줄 간격 포함)에 따라 UILabel 의 높이 를 동적 으로 조정 해 야 한다.
필 자 는 여기 서 UILabel 내부 의 특정한 글꼴,줄 간격,UILabel 너비 에 따라 UILabel 내부 의 진짜 높이 를 얻 을 수 있 는 두 가지 방법 을 제공 했다.
동적 조정 라벨 의 높이 는 모두 세 단계 로 나 뉜 다.
  • 특정 형식 을 가 진 AttributedString 을 획득 합 니 다.
  • 4.567917.Attributed String 에 따라 새로운 높이 를 얻 을 수 있 습 니 다
  • 라벨 의 높이 를 다시 설정 합 니 다.
  • \#예시 데모
    필 자 는 같은 내용 을 가 진 레이 블 을 동시에 보 여 줌 으로 써 동적 으로 높이 를 조정 하 는 상황 이 있 는 지 비교 해 보 았 다.
    \#\#실현 절차:
    \#\#\#1.특정 형식 을 가 진 AttributedString 획득
    
    /**
     *             
     *
     * @param string     
     * @param font   
     * @param spacing    
     *
     * @return           
     */
    - (NSAttributedString *)attributedStringWithString: (NSString *)string andFont: (UIFont *)font andLineSpacing:(CGFloat)spacing
    {
     NSMutableAttributedString *contentString = [[NSMutableAttributedString alloc] initWithString:string];
     [contentString addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, contentString.length)];
     NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
     [paragraphStyle setAlignment:NSTextAlignmentLeft];
     [paragraphStyle setLineSpacing:spacing];
     [contentString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [contentString length])]; 
     return [contentString copy];
    }
    \#\#\#2.AttributedString 에 따라 높이 획득
    
    /**
     *                     
     *
     * @param string            
     * @param maxWidth UILable     (   )
     *
     * @return                   
     */
    - (CGSize)sizeOfAttributedString: (NSAttributedString *)string withMaxWidth: (CGFloat)maxWidth
    {
      CGRect rect = [string boundingRectWithSize:CGSizeMake(maxWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
      return rect.size;
    }
    \#\#\#3.레이 블 높이 재 설정
    
    NSAttributedString *string = [self attributedStringWithString:self.contentString andFont:[UIFont systemFontOfSize:15.0] andLineSpacing:2.0];
    CGSize size = [self sizeOfAttributedString:string withMaxWidth:maxWidth];
    self.resizeLabel.frame = CGRectMake((self.view.bounds.size.width - maxWidth)/2, 400, maxWidth, size.height);
    self.resizeLabel.attributedText = string;
    같은 형식의 내용 을 가 진 UILabel 을 비교 하여 표시 합 니 다.
    
    self.orignalLabel.attributedText = [self attributedStringWithString:self.contentString andFont:[UIFont systemFontOfSize:15.0] andLineSpacing:2.0 ];

    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기