2015-01-27 6 views
1

내부에 여러 항목이있는 UITableViewCell이 있습니다. (그냥 텍스트보기가 아니기 때문에 나는 this 옵션을 따릅니다.) 내부에있는 내용을 기반으로 동적으로 크기를 높이려고합니다.동적 크기 UITableViewCell의 높이

내가 바꿀 높이는 UITextView와 UIView입니다. textView는 지속적으로 변경 될 것입니다 (다른 방법으로 원한다면 게시 할 수 있습니다). 여기

내 코드입니다 : 사용자가 버튼을 클릭하면 그리고있는 UIView가 변경됩니다

- (void)viewDidLoad 
{ 
    self.tableView.rowHeight = UITableViewAutomaticDimension; 
} 

- (IBAction)thisButton:(id)sender 
{ 
    CGRect frame = self.myView.frame; 
    frame.size.height = 50; 
    frame.size.width = self.myView.frame.size.width; 

    self.myView.frame = frame; 

    // update 'myView's constraint 
    self.viewHeight.constant = self.myView.frame.size.height; 

    self.tableView.rowHeight = UITableViewAutomaticDimension; 
    [myTableView reloadData]; 
} 

문제 :

  • 무슨 일이며, 나는 버튼은 누를 때 UIView의 높이가 으로 업데이트되지만 셀의 다른 모든 요소는 위로 이동하고 셀은 동일한 크기로 유지됩니다.

  • UITextView의 높이가 변경되면 이 모두 꺼내지 않으며 셀의 높이가 그대로 유지됩니다. textView의 키가 바뀌지 만 다른 모든 것을 처리합니다.

제약 다음 UITextView에

나는 3 개 제약이 - 양쪽에 각각 2, 1 위에. UIView에는 3 개의 제약 조건이 있습니다. 각면에는 2, 아래쪽에는 1이 있습니다. 그런 다음 UIView를 textView에 연결하는 제약이 있습니다.

동적 내부 인원의 최대 높이를 계산함으로써있는 UITableViewCell 크기를 관리
+0

당신이 추가 시도해 봤어 호출해야하고이를 행 높이로 설정? – NorthBlast

+0

제약 조건에 맞게 화면을 촬영 하시겠습니까? –

답변

0

:

있는 NSArray * 배열 = [있는 NSArray의 ALLOC] initWithArray @ [뷰 1, 뷰 2, view3];

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    __block CGFloat maxHeight; 
    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
     UIView *view = obj; 
     if (view.bounds.size.height > maxHeight) { 
      maxHeight = view.bounds.size.height; 
     } 
    }]; 

    return maxHeight; 
} 

다음보기의 크기를 변경하여 메소드의 끝에서 당신은 함께 두 높이를 볼 [self.tableView reloadData]

+0

사용할 수는 있지만 여러 개의 셀이 있습니다. –

+0

정확합니다. 다른 셀에 액세스하려면 [tableView cellForRowAtIndexPath : indexPath]를 사용하십시오. 내 업데이트를 참조하십시오. 좀 더 자세한 코드를 제공하면 더 자세히 대답 할 수 있습니다. – Lyanch

+0

UIView의 iboutlet 연결이 있습니다. 배열에 약 4 개가 있습니다. 모든 셀에 대해 if 문을 작성해야합니까? 사촌 나는 모든보기 myViewHeight 할당 할 수 없습니다. –

관련 문제