2016-06-20 4 views
0

기존 프로젝트 (Objective-C, Xcode 7.3, iOS)에서 몇 가지 문제를 해결해야합니다.UITableViewAutomaticDimension 작업을 시도하는 중

여기에는 콘텐츠에 맞게 크기를 조정할 수있는 셀이 필요한 표보기가 있습니다. 셀에는 레이블이 포함됩니다. 프로젝트에서 UITableViewAutomaticDimension을 사용하지만 제대로 작동하지 않는 것 같습니다. 셀의 텍스트가 오른쪽 테두리를 넘습니다.

그래서 지금 내가 확인한 몇 가지 포인트 :

  1. 속성 Inspector에서 셀의 "라인"속성을 설정
  2. 0으로 나는 라벨 (관련 그림) 4 개 제약이있다.
  3. heightForRowAtIndexPath 메서드는 return UITableViewAutomaticDimension; 만 포함합니다. 여기

UITableViewAutomaticDimension 사용되는 코드입니다 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
    self.tableView.estimatedRowHeight = 50.0; 
    self.tableView.rowHeight = UITableViewAutomaticDimension; 
}  

Constraints screenshot <======

+0

셀 제한을 보여 줄 수 있습니까? –

+0

@Bhadresh Mulsaniya 그림을 추가했습니다. 죄송합니다. – Skolvan69

+0

질문이 업데이트 된 후에 보았습니다! –

답변

0

- (CGFloat)tableView:(UITableView *)_tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 186, 0)]; //max width that is allowed for label 
    lbl.numberOfLines = 0; 
    lbl.lineBreakMode = NSLineBreakByWordWrapping; 

    int GAP = 3; 
    float height = 0; 
    float fontSize = 14; 
    NSString *cellText = yourtext; 
    lbl.font= [ UIFont fontWithName:FONT_NAME_Ubuntu size: fontSize]; 
    bl.text = cellText; 
    [lbl sizeToFit]; 
    height += lbl.frame.size.height; 
    height += GAP; 

    return height; 
    } 

을 시도하거나 아래 시도 하나

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

     /* 
     for dynamic cell heigh according to the description display in cell 
     */ 

     NSDictionary *dict1 = (NSDictionary*)[array objectAtIndex:indexPath.row]; 
     NSString *cellText = [dict1 valueForKey:@"test"]; 
     UIFont *cellFont = [UIFont fontWithName:FONT_NAME_GOTHAM_4 size:11.0]; 
     CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT); 
     CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping]; 


      return labelSize.height + 80; 


} 
0
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewAutomaticDimension; 
} 
0

당신은 텍스트의 호출이

[cell setNeedsDisplay]; 
[cell layoutIfNeeded]; 

희망이 도움 IB 또는 코드

[yourLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis: UILayoutConstraintAxisVertical]; 
[yourLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis: UILayoutConstraintAxisVertical]; 

에 그리고 설정 한 후 설정 필요. 나는 이것을 Apple의 Self Sizing 예제에서 가져왔다.

관련 문제