2010-06-17 7 views
3

그래,이 시점에서 테이블 셀에 있지 않습니다. (세포의 높이와 관련하여 많은 스레드를 보았습니다.) 뷰의 맨 위에 제목과 설명, 그 아래에 tableView가있는 상세 뷰가 있습니다. 설명의 길이가 달라질 경우, 어떻게 그것과 함께 조정 tableView 얻을 그래서 항상 바로 아래에서 시작합니까?가변 높이 UIViews 및 레이블

애플은 앱 스토어 응용 프로그램에서 이것을보고 있습니다. 응용 프로그램 설명을 보면 (마치 구입하려는 것처럼) 응용 프로그램 설명이 있으며, 화면 캡처의 스크롤 영역이 끝나는 곳이면 어디든됩니다. 어떻게 그런 텍스트 설명에서 다양한 높이를합니까?

이 모든 작업을 프로그래밍 방식으로 수행하고 있습니까? 또는 IB의 레이아웃 컨트롤을 사용하여 동일한 작업을 수행 할 수 있습니까?

답변

1

당신이보기에 프로그래밍 테이블보기를 추가하고 상세 뷰의 크기에 따라 그 프레임을 설정해야

1> 2>가 추가 detailView의 현재 프레임을 얻을 그것은 높이이고보다 것은보기에있는 tableview를 추가

UITableView *table = [[UITableView alloc] initWithFrame:CGRectMake(initX , initY + DetailViewFrame.size.height, TableWidth, TableHeight) style:UITableViewStylePlain]; 
[view addSubView:table]; 
+0

이것은 의미가 있습니다. 어쨌든 IB에서 그렇게 할 수는 없습니다. 나는 모든 것을 하나의 큰 스크롤 창으로 만드는 방법을 찾아 낼 것입니다. 도움말에 감사드립니다. –

+0

고마워요. 그냥 자책을 수정하십시오 ... X 좌표에 너비를 추가 할 필요가 없습니다 ... 편집 중입니다 ... –

1

부모 뷰의 크기를 조정하면 뷰가 크기 방법 IB 변화의 레이아웃 컨트롤있다. 이 경우 라벨과 테이블 뷰는 형제 뷰이므로 프로그램 적으로이 작업을 수행해야합니다. 크기가 맞는 레이블을 가지면 그 밑면 (원점의 y 위치와 레이블의 높이)을 찾아이를 사용하여 테이블보기를 배치 할 위치를 안내합니다. 계산을 수행하기에 충분한 정보가있는시기에 따라 -viewDidLoad 또는 -viewWillAppear :에서이 작업을 수행 할 수 있습니다.

0

나는, 다음을 참조 런타임에 셀 높이를 계산하기 위해 "sizeWithFont"를 사용 필요가 있다고 생각 :

- (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath 
{ 
    CGSize labelSize = CGSizeMake(200.0, 20.0); 
    if ([string length] > 0) 
    labelSize = [string sizeWithFont: [UIFont boldSystemFontOfSize: 17.0] constrainedToSize: CGSizeMake(labelSize.width, 1000) lineBreakMode: UILineBreakModeWordWrap]; 
    return 24.0 + labelSize.height; 
} 

그리고 "cellForRowAtIndexPath"이 당신을 도와줍니다

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; 
     cell.accessoryType = UITableViewCellAccessoryNone; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
     cell.autoresizingMask = UIViewAutoresizingFlexibleHeight;  
    } 

cell.textLabel.text = @"Your string with variable length";    
     [cell.textLabel setFont:[UIFont boldSystemFontOfSize:12]]; 
     //[cell.textLabel setAdjustsFontSizeToFitWidth:YES]; 
     [cell.textLabel setBaselineAdjustment:UIBaselineAdjustmentAlignBaselines]; 
     [cell.textLabel setLineBreakMode:UILineBreakModeWordWrap]; 
     [cell.textLabel setNumberOfLines:0]; 
return cell; 
} 

희망의

. ..

+0

도움을 주셔서 감사 합니다만,이 경우에는 표 셀. 그 위의 텍스트 레이블의 높이를 기반으로 한 테이블보기 자체의 배치입니다. 참조 용으로 좋습니다. –

관련 문제