2011-10-06 56 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

回答

2

您需要更改這個

[label setNumberOfLines:2]; 

它主要講述了標籤的最大扭曲線

你還需要確保幀的高度是2(或更多)線

+0

試了一下,還是一樣沒有使用setNumberOfLines工作 – Desmond

+4

:0是正確的設置這告訴,因爲它需要自動換行的標籤,使用盡可能多的行。將其設置爲2將只允許兩行文本然後......就會出現。 – Openside

2

我認爲此行是罪魁禍首

UILabel *froglabel = (UILabel *)cell; 

你基本上是鑄造細胞作爲標籤足夠大這意味着你使用的是廢棄的method.You應考慮以下分配文本到細胞默認的文本標籤:

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