2011-06-11 5 views
1

im은 내 UILabel 높이를 동적으로 만드는 데 문제가 있습니다. 레이블이 사용자 정의 TableViewCell에 포함되어 있습니다.UILabel 동적 높이가 작동하지 않습니다.

TableViewCellHeight 동적을 만들었지 만 레이블을 여러 줄로 만들 수 없습니다.

줄 수 = 0 (IB와 코드에서)을 설정할 때마다 레이블/텍스트가 완전히 사라집니다. 그리고 lineBreakMode는 그다지 많은 것을하지 못합니까?

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


    Book *eventUp = [appDelegate.eventDataUp objectAtIndex:indexPath.row]; 

    NSString *text = eventUp.date; 

    CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); 

    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 

    CGFloat height = MAX(size.height, 44.0f); 

    return height + (CELL_CONTENT_MARGIN * 2); 

    //return 66;  

} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [appDelegate.eventDataUp count]; 
} 



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

    static NSString *CellIdentifier = @"EventUpCVCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 

     self.eventUpCVCell = nil; 
     [[NSBundle mainBundle] loadNibNamed:@"EventUpCVCell" owner:self options:nil]; 
     cell = self.eventUpCVCell; 

     label = [[UILabel alloc] initWithFrame:CGRectZero]; 
     [label setLineBreakMode:UILineBreakModeWordWrap]; 
     [label setMinimumFontSize:FONT_SIZE]; 
     [label setNumberOfLines:0]; 
     [label setFont:[UIFont systemFontOfSize:FONT_SIZE]]; 
     [label setTag:1]; 

     [[cell contentView] addSubview:label]; 
     } 
    Book *eventUp = [appDelegate.eventDataUp objectAtIndex:indexPath.row]; 

    UILabel *lblMonth = (UILabel *) [cell viewWithTag:kLabel1Tag]; 
    UILabel *lblTitle = (UILabel *) [cell viewWithTag:kLabel2Tag]; 
    UILabel *lblDate = (UILabel *) [cell viewWithTag:kLabel3Tag]; 

    //month.text = eventUp.month; 
    lblTitle.text = eventUp.title; 
    lblDate.text = eventUp.date; 

    //lblDate.lineBreakMode = UILineBreakModeWordWrap; 
    lblDate.numberOfLines = 1; 

    lblMonth.text = [NSString stringWithFormat:@"%@ ", eventUp.month]; 



    //cell.textLabel.text = eventUp.title; 

    //cell.detailTextLabel.text = eventUp.date; 

    //NSLog(@"Hello"); 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

    // Set up the cell 
    return cell; 
} 
+0

여기에 동적 높이를 설정하려고 레이블있는 상태. – EmptyStack

답변

3

당신은 실제로 당신이 CGRectZero를 프레임을 만들고, 그것을 만든 후 레이블 프레임을 설정해야

시도 :

 label = [[UILabel alloc] initWithFrame:CGRectZero]; 
     [label setLineBreakMode:UILineBreakModeWordWrap]; 
     [label setMinimumFontSize:FONT_SIZE]; 
     [label setNumberOfLines:0]; 
     [label setFont:[UIFont systemFontOfSize:FONT_SIZE]]; 
     [label setTag:1]; 

     Book *eventUp = [appDelegate.eventDataUp objectAtIndex:indexPath.row]; 

     NSString *text = eventUp.date; 

     CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); 

     CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 

     [label setFrame:CGRectMake(0,0,size.width,size.height)]; 
관련 문제