在ios 5中更改tableview行高

Max*_*me 10 uitableview ios5

在ios 5之前,我会在tableview中设置行高,如下所示:

self.tableView.rowHeight=71;
Run Code Online (Sandbox Code Playgroud)

但是,它不适用于iOS5.

有人有想法吗?

谢谢

MAN*_*rii 18

您是否尝试过tableView:heightForRowAtIndexPath:UITableViewDelegate

您可以通过tableView:heightForRowAtIndexPath:UITableView委托中实现(支持UITableViewDelegate协议的人)来将行高设置为71 .

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 71.0;
}
Run Code Online (Sandbox Code Playgroud)

首先,您应该设置tableView的委托.代表应遵守UITableViewDelegate协议.假设我们有一TableDelegate堂课.为了符合UITableViewDelegate协议,应该在它的声明中将它放在方括号中,如下所示:

...    
@interface TableDelegate : UIViewController <UITableViewDelegate>
...
or
@interface TableDelegate : UIViewController <some_other_protocol, UITableViewDelegate>
Run Code Online (Sandbox Code Playgroud)

然后设置委托:

...
// create one first
TableDelegate* tableDelegate = [[TableDelegate alloc] init];
...
self.tableView.delegate = tableDelegate;
Run Code Online (Sandbox Code Playgroud)

最后,您应该在实现中实现该tableView:heightForRowAtIndexPath:方法TableDelegate:

@implementation TableDelegate
...
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 71.0;
}
...
@end
Run Code Online (Sandbox Code Playgroud)

rowHeight的

只是为了澄清,使用rowHeight应该工作得很好,并且表现要好于-tableView:heightForRowAtIndexPath:Javier Soto在评论中指出的常数.另请注意,如果您的UITableView具有委托返回高度-tableView:heightForRowAtIndexPath:rowHeight属性集,则可以使用先前值.

  • 检查Apple警告使用此实现而不是设置rowHeight:使用tableView:heightForRowAtIndexPath:而不是rowHeight属性会对性能产生影响.每次显示表视图时,它会在其每个行的委托上调用tableView:heightForRowAtIndexPath:这会导致具有大量行(大约1000或更多)的表视图出现严重的性能问题. (4认同)