2017-02-02 3 views
0

저는이 iOS 앱의 새로운 세계에 있으며 항목의 세부 정보를 표시해야하는 앱을 개발 중입니다.제한이있는 UIScrollView의 프로그래밍 방식으로 높이를 늘리는 방법은 무엇입니까?

I need to load the comments below the title

These are how my elements are이 상세하게는 사용자로부터 의견을 받아 내가 필요로하는 때마다 세부 새로운 코멘트 내 화면 증가의 높이를 얻을 수 있다는 것입니다 수 있습니다, 여기에 내가 무엇을했는지,이 화면입니다

스크롤의 제한은 다음과 같습니다. 후행, 앞, 위, 아래를 슈퍼 뷰로 제한합니다. 내용보기 : 뒤쪽, 앞쪽, 위쪽 및 아래쪽을 수퍼 뷰에 맞추고 x 및 y의 중심을 정렬하고 높이 및 너비와 수퍼 뷰를 같게합니다.

모든 의견은 서비스에서 비롯되었으므로 콘텐츠를 늘리고 싶습니다. 모든 주석을 표시하지만 UIScrollView가 작동하지 않습니다. 내가 3 일 동안 노력 좀 몸이 나를 도울 수 있기를 바랍니다

int y = bottomLine.frame.origin.y + 8; 
    int numComments = [[content objectForKey:@"comments"] intValue]; 

    if (numComments > 0) { 
     for (int j=0; j < [comments count]; j++) { 

       commentData = [comments objectAtIndex:j]; 

       //Create all the elements 
       viewComments = [[UIView alloc] initWithFrame:CGRectMake(8, y, self.view.bounds.size.width - 16, 109)]; 
       viewComments.backgroundColor = [UIColor grayColor]; 

       UIImageView *viewImgComment = [[UIImageView alloc] initWithFrame:CGRectMake(8, 8, 50, 50)]; 

       NSURL *linckImage = [NSURL URLWithString:[commentData objectForKey:@"image"]]; 
       [viewImgComment sd_setImageWithURL:linckImage placeholderImage:[UIImage imageNamed:@"place_holder_user"]]; 
       viewImgComment.layer.cornerRadius = 25; 
       viewImgComment.clipsToBounds = YES; 

       UILabel *lblTituloComment = [[UILabel alloc] initWithFrame:CGRectMake(50 + 16, 8, (viewComments.bounds.size.width - 74) , 17)]; 
       [lblTituloComment setText:[commentData objectForKey:@"name"]]; 
       [lblTituloComment setFont:[UIFont systemFontOfSize:14.0f]]; 

       UIView *viewRating = [[UIView alloc] initWithFrame:CGRectMake(50 + 16, 17 + 16, 121, 23)]; 
       viewRating.backgroundColor =[UIColor blackColor]; 
       viewRating.layer.cornerRadius = 11; 

       UILabel *lblDescripcionComment = [[UILabel alloc] initWithFrame:CGRectMake(8, 50 + 8, (viewComments.bounds.size.width - 16), 43)]; 

       [lblDescripcionComment setText:[commentData objectForKey:@"comment"]]; 
       [lblDescripcionComment setFont:[UIFont systemFontOfSize:14.0f]]; 
       [lblDescripcionComment setNumberOfLines:0]; 

       y = y + 117; 

       [viewComments addSubview:viewImgComment]; 
       [viewComments addSubview:lblTituloComment]; 
       [viewComments addSubview:viewRating]; 
       [viewComments addSubview:lblDescripcionComment]; 

       [masterScroll addSubview:viewComments]; 
      } 
     } 
     //Increase the content size 
     masterScroll.contentSize = CGSizeMake(self.view.bounds.size.width, y); 

: 생각 때문에 제약을

다음

내가로드하고 주석을 인쇄하고 내있는 ScrollView의 contentzise을 변경하는 방법입니다입니다 연구하고 묻습니다. 어떤 질문이나 어떤 설명이 나에게 알려줘.

+0

당신이 의견을 당신이 테이블보기 또는 UIView의를 사용하고 말해 줄 수? 테이블보기에 문제가없는 경우 당신이 uiview를 사용한다면 당신은 약간의 변경을해야합니다. 큰 문제는 아닙니다. 그냥 말해. – Pavankumar

+0

확실히, 나는 uiview를 사용하고 있습니다. – Joe0588

+0

1. 코멘트를 추가하기 전에 현재 높이의 기록을 유지하십시오. 주석을 추가 한 후 해당보기의 높이를 계산하십시오. 이전 및 현재 높이의 차이를 찾습니다. 2. 스토리 보드로 이동 -> 스크롤보기의 높이 제한 조건 선택 -> 해당 제약 조건에 대한 콘센트 만들기. -> 이제 코드로 이동하십시오.> heghtConstraint.constant = differenceHeight + currentHeightOfScrollView. – Pavankumar

답변

0

먼저 라벨 높이 (라벨의 내용 텍스트 포함)를 얻어야합니다.

- (CGFloat)getLabelHeight:(UILabel*)label 
{ 
    //Here label is your Comment label. 
    CGSize constraint = CGSizeMake(label.frame.size.width, CGFLOAT_MAX); 
    CGSize size; 

    NSStringDrawingContext *context = [[NSStringDrawingContext alloc] init]; 
    CGSize boundingBox = [label.text boundingRectWithSize:constraint 
                options:NSStringDrawingUsesLineFragmentOrigin 
               attributes:@{NSFontAttributeName:label.font} 
                context:context].size; 

    size = CGSizeMake(ceil(boundingBox.width), ceil(boundingBox.height)); 
    return size.height; 
} 

받기 의견 라벨 높이 설정하고있는 ScrollView 콘텐츠 크기 :

CGSize *size; 
CGFloat height = [self getLabelHeight:lblDescripcionComment]; 
NSLog(@"totalHeight :%f",[self getLabelHeight:lblDescripcionComment]); 
lblDescripcionComment.frame = CGRectMake(18, 260, 220, height); 

#Here h is your scrollview height without comment label. 
[scrollView setContentSize:CGSizeMake(scrollView.frame.size.width,h+height)]; 
관련 문제