ios 7 uitableviewcell 绘图更改
Posted
技术标签:
【中文标题】ios 7 uitableviewcell 绘图更改【英文标题】:ios 7 uitableviewcell drawing changes 【发布时间】:2013-09-24 09:39:23 【问题描述】:我在 ios 7 上遇到了自定义单元格绘图的问题(在 iOS 6 和 5 上工作正常)。
在 heightForRowAtIndexPath 上,我返回的高度小于每个部分最后一行的单元格实际高度,因为我需要最后一个单元格与下一部分的标题重叠。
Apple 似乎在 iOS 7 上进行了绘图改进或其他操作,因为只有从 heightForRowAtIndexPath 返回的高度正在绘制,所以我的单元格将在底部被切割。
任何想法都会受到赞赏。
【问题讨论】:
【参考方案1】:嗯,这就是我会做的......
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
if (indexPath.row == [_array_todo count])
// last row
return 50;
else
// not the last row
return 80;
还要考虑当单元格被选中时你在做什么......
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
sel_path = indexPath;
[self.tableView beginUpdates];
[self.tableView endUpdates];
【讨论】:
我在 iOS 7 之前的 heightForRowAtIndexPath 中做了同样的事情,但在 iOS 7 上无法正常工作。如果最后一行返回 50,则只会绘制 50 px 的高度,因此不会显示单元格的底部。 您是否尝试过对 Cell 进行子类化并使用 -(bool)setSelected 方法?您可以在未选择单元格时隐藏并在选择单元格时再次显示... 就像我之前说的,我已经有一个自定义单元格并且该单元格不可选择,您无法点击它。【参考方案2】:我遇到了同样的问题和情况(点击高度较低的最后一个单元格以添加更多数据)。我没有研究为什么会发生这种情况,但有些东西对我有用。我使用了来自 NSDictionary 的表格数据。它适用于 iOS6.1 及更早版本。在 iOS7 中,它导致了与您相同的错误。在 viewDidLoad 中将数据分配到单独的 NSMutableArray 解决了这个问题。所以不要在 tableview 委托方法中到处使用
[self.data objectForKey:@"offers"]
我做到了
- (void)viewDidLoad
[super viewDidLoad];
if (!tableData) tableData = [[NSMutableArray alloc] initWithArray:[self.data objectForKey:@"offers"]];
然后全部替换。希望对你也有帮助。
【讨论】:
以上是关于ios 7 uitableviewcell 绘图更改的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 - 我可以更改 UITableViewCell 中的删除按钮背景颜色吗?
如何在iOS 7上的UITableViewCell左侧获得复选标记,就像在设置中一样?