UITableViewCell行高

时间:2012-11-12 10:02:37

标签: objective-c ios cocoa-touch

是否有任何此类方法或解决方案可根据内容自动调整tableview的行高。我的意思是我不想根据行的内容指定行高并希望行高。如果没有这样的方法然后告诉我解决方案,当设备的方向改变时,如何改变高度?

6 个答案:

答案 0 :(得分:3)

您必须找到内容的高度并可以使用

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
 {
     return "your content height + your padding height value";
 }

在方向更改时,只需重新加载表视图即可;

答案 1 :(得分:2)

检查出来

// --dynamic cell height according to the text--
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

  NSString *text = <your text>;
  CGSize constraint = CGSizeMake(210, 20000.0f); 
  CGSize size = [text sizeWithFont:[UIFont fontWithName:@"Helvetica-Light" size:14] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 
  // constratins the size of the table row according to the text

  CGFloat height = MAX(size.height,60);

  return height + (15);
  // return the height of the particular row in the table view
}

希望这会有所帮助

你尝试过这种方法的方向

编辑吗?

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations

    return YES;
}

或者如果您的表格单元格是自定义的标签和图像视图等,那么您可以使用setAutoresizingMask:在每个上自动调整方向。

[yourview setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];

答案 2 :(得分:1)

你可以实现 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

UITableView的委托方法。

如果你谷歌它,你应该能够找到很多关于它的教程。

以下是一个例子:

http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/

答案 3 :(得分:0)

您必须使用:

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

是的 - 我知道你很了解这种方法,我仔细阅读了你的问题。

  1. 您必须使用该委托方法来动态控制行的高度。我的建议是从tableview的后端数据模型中检查每个单元格的内容,并返回一个适合该单元格的数字:
  2. NSDictionary *thisCell = (NSDictionary *)[myArray objectAtIndexPath:indexPath.row];

    NSString *myCellContents = [thisCell valueForKey:@"MyStringIWantToCheckOut"];
    
    if ([mycellContents length] > 25) {        
        return 80; 
    } else {        
        return 40;
    }
    
    1. 就方向更改而言,您必须在委托方法中执行此操作:

      -(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

    2. 然后点击reloadData上的TableView

答案 4 :(得分:0)

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

    switch (indexPath.row){
        case 0:
            if(indexPath.section == 0)
                //title 
                return  75;
        default:
            return 75;
    }
}

答案 5 :(得分:0)

func tableView(_ heightForRowAttableView:UITableView,heightForRowAt indexPath:IndexPath) - &gt; CGFloat的     {         返回UITableViewAutomaticDimension     }

表示行的动态高度,否则你可以给出静态高度而不是&#34; UITableViewAutomaticDimension&#34;