【发布时间】:2014-10-01 11:38:23
【问题描述】:
前提很简单。我有一个UITablewView。我有一个故事板,我在其中配置了两个原型单元格,一个有一个 headerCell 的重用标识符,另一个的重用标识符是单元格。我正在我的UITableViewController 中实例化一个像这样的自定义标题单元格:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
MyHeaderCell* headerCell = [tableView dequeueReusableCellWithIdentifier:@"headerCell"];
headerCell.delegate = self;
return headerCell;
}
我的 headerCell 上有一个按钮,当点击该按钮时,它会调用[_delegate toggleHeaderSize]。您可以在上面看到委托属性只是UITableViewController。这是toggleHeaderSize 方法:
-(void)toggleHeaderSize {
[self.tableView beginUpdates];
if (headerHeight == 100) {
headerHeight = 120;
} else {
headerHeight = 100;
}
[self.tableView endUpdates];
// [self.tableView reloadData];
}
heightForHeaderInSection 方法中使用了 headerHeight 变量,如下所示:
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return headerHeight;
}
标题改变了大小,但这很奇怪。表格向下滑动,但标题实际上并没有增长。如果我只滚动表格一个像素,标题似乎意识到它需要重新绘制,并且它会调整大小。
我想我已经阅读了所有关于调整标题单元格大小的 SO 帖子。他们似乎都认为beginUpdates/endUpdates 舞蹈是神奇的。这些似乎确实是必要的,但它并没有解决重绘的问题。
这是我的问题的 GIF 动画。 编辑:我不能发布动画 GIF,因为我没有 10 个声望点,但是如果你去 http://nspaul.imgur.com/all/ 你可以找到它:-)
我希望得到任何指导。如果有人愿意,我可以发布更多代码。如果有帮助,我什至会将整个项目发布到 Github。
【问题讨论】:
-
你想要什么增加你的 headerCell 高度或你的 tableview 标题高度?
-
既然我在
viewForHeaderInSection中使用了headerCell,那不是让headerView 成为tableviewHeader 吗?或者,headerCell 和 tableview 标头之间是否存在显着差异?如果有更好的方法可以做到这一点,请告诉我。这里的目标是使我用作标题的单元格更大,并使其具有动画效果。
标签: ios objective-c uitableview