2011-10-06 5 views
0

제 코드를 살펴 보겠습니다. 제 셀 레이블은 텍스트를 줄 바꿈하지 않습니다. 인덱스에서 행에 대한UITableViewCell이 텍스트를 줄 바꿈하지 않습니다

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *MyCellIdentifier = @"MyCellIdentifier"; 


    UITableViewCell *cell = (UITableViewCell*)[self.tableView dequeueReusableCellWithIdentifier:MyCellIdentifier]; 

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyCellIdentifier] autorelease]; 


     [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
     [cell setClipsToBounds:NO]; 
     [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

     UILabel *label = [[UILabel alloc] init]; 
     [label setBackgroundColor:[UIColor clearColor]]; 
     [label setLineBreakMode:UILineBreakModeWordWrap]; 
     [label setNumberOfLines:0]; 
     [label setTextColor:[UIColor darkGrayColor]]; 
     [label setShadowColor:[UIColor whiteColor]]; 
     [label setShadowOffset:CGSizeMake(0, 1)]; 
     [[cell contentView] addSubview:label]; 
     [label release]; 

    } 
    UILabel *froglabel = (UILabel *)cell; 
    NSUInteger row = [indexPath row]; 
    CGSize textSize; 
    CGSize labelSize = { 100, 20000 }; 
    [froglabel setText:genus]; 
    [froglabel setFont:detailFont]; 
    [froglabel setTextColor:[UIColor whiteColor]]; 
    textSize = [[froglabel text] sizeWithFont:[self detailFont] constrainedToSize:labelSize lineBreakMode:UILineBreakModeWordWrap]; 

테이블보기 높이

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

    NSUInteger row = [indexPath row]; 
    CGSize textSize; 
    CGSize labelSize = { 300, 20000 }; // width and height of text area 


    textSize = [[self genus] sizeWithFont:[self detailFont] constrainedToSize:labelSize lineBreakMode:UILineBreakModeWordWrap]; 
    NSLog(@"%i = height %f", row, textSize.height); 
    return textSize.height + 7; 
    break; 

enter image description here

[label setNumberOfLines:2]; 

을 변경해야

답변

2

그것은 기본적으로 라벨을 최대 휨 라인을 알려줍니다

당신은 또한 프레임 높이가 2 개 (또는 그 이상)의 라인

나는이 라인은 범인

UILabel *froglabel = (UILabel *)cell; 

당신은 기본적으로 레이블로 셀을 캐스팅이라고 생각

+0

시도해도 동일하지 않음 – Desmond

+4

setNumberOfLines : 0을 사용하면 텍스트를 줄 바꾸기에 필요한만큼의 줄을 레이블에 사용하도록 올바른 설정을 지정합니다. 이 값을 2로 설정하면 두 줄의 텍스트 만 허용됩니다. 그러면 ...이 나타납니다. – Openside

2

충분히 큰 있는지 확인해야 이는 당신이이 method.You는 다음 사항을 고려한다 deprecated 된 사용하여 세포의 기본 텍스트 레이블 텍스트를 할당하는 의미 도움이

UILabel *label; 

if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyCellIdentifier] autorelease]; 


    [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
    [cell setClipsToBounds:NO]; 
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

    label = [[[UILabel alloc] init] autorelease]; 

    [label setBackgroundColor:[UIColor clearColor]]; 
    [label setLineBreakMode:UILineBreakModeWordWrap]; 
    [label setNumberOfLines:0]; 
    [label setTextColor:[UIColor darkGrayColor]]; 
    [label setShadowColor:[UIColor whiteColor]]; 
    [label setShadowOffset:CGSizeMake(0, 1)]; 
    label.tag = 2; 
    [[cell contentView] addSubview:label]; 
} 
else 
{ 
    label = (UILabel *)[cell.contentView viewWithTag:2]; 
} 

NSUInteger row = [indexPath row]; 
CGSize textSize; 
CGSize labelSize = { 100, 20000 }; 
[label setText:genus]; 
[label setFont:detailFont]; 
[label setTextColor:[UIColor whiteColor]]; 

희망을.

+0

라벨에 텍스트 및 기타 속성을 설정하려고 할 때 충돌이 발생하기 때문에 레이블을 자동으로 릴리스하도록 코드를 변경하고 명시 적 릴리스를 제거하십시오. – Openside

관련 문제