我在iOS 7中遇到UITableView
(样式:UITableViewStyleGrouped
)和separatorInset
的问题。有时,分隔符不可见。
简单地说,如果我渲染表直接加载所有数据(例如来自NSArray
),则使用相同的表(完全相同的代码),分隔线是正确的(默认iOS7样式,正确的插入值)。如果我使用类似insertRowsAtIndexPaths的东西动态地将新行添加到同一个表中,则分隔符行将跨越单元格/屏幕的整个宽度(因此,没有iOS7默认样式)。
我试图在setSeparatorInset
和每个单元格中使用UITableView
强制'separatorInset',但这不起作用。如果我在添加新行后reloadData
,则会正确显示分隔线。但这似乎不是一个很好的解决方案。
为什么分隔符间歇性地不可见的任何想法?
答案 0 :(得分:12)
将此代码写入ViewDidLoad
方法:
[tblView setSeparatorInset:UIEdgeInsetsZero];
答案 1 :(得分:2)
对我来说,唯一有效的方法是重新加载前一个单元格,即位于所选单元格顶部的单元格。
if (indexPath.row > 0) {
NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row - 1 inSection:indexPath.section];
[tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationNone];
}
答案 2 :(得分:0)
将此方法和此方法中的颜色应用到代码中。这是iOS7更新。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
[cell setBackgroundColor:[UIColor clearColor]];
}
答案 3 :(得分:0)
确保单元格的clipsToBounds设置为YES,但单元格的contentView设置为NO。还设置了cell.contentView.backgroundColor = [UIColor clearColor];
答案 4 :(得分:0)
使用它。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[tableView setSeparatorInset:UIEdgeInsetsZero];
}
}