查看: 434|回复: 0

[IOS开发教程] iOS11 SectionHeader 胡乱移动且滑动时出现重复内容的解决方法

发表于 2017-11-29 08:00:04

升级到iOS 11后,痛苦的事情多起来了,以前版本没有的出现问题的代码,经过Xcode 9一编译,千万草泥马奔腾而过;

今天碰到一个奇葩问题,直接进入主题:

问题描述:

  1. -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
  2. {
  3. return 12;
  4. }
  5. -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
  6. {
  7. UIView* headerSection_V = [[UIView alloc]initWithFrame:CGRectMake(ZERODIS, ZERODIS, SCREEN_WIDTH, 12)];
  8. [headerSection_V setBackgroundColor:COLOR_3];
  9. return headerSection_V;
  10. }
复制代码

1- headerView 会错乱移动, 且调整tableView 的style也没有效果;

2- 滑动tableView的时候, 貌似底部又多出一个图层tableView,重复了tableViewCell的内容;

3- 以下代码无效:(当然tableVIew 懒加载的时候 还有相应代码设置cell分割线的偏移)

  1. /**
  2. * 解决cell分割线距离两边12 居中对齐
  3. */
  4. - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
  5. {
  6. if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
  7. [cell setSeparatorInset:UIEdgeInsetsMake(ZERODIS, 12, ZERODIS, 12)];
  8. }
  9. if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
  10. [cell setLayoutMargins:UIEdgeInsetsMake(ZERODIS, 12, ZERODIS, 12)];
  11. }
  12. }
复制代码

最后排查发现:

旧代码使用了xib但是又没有用xib的tableView, tableView又是自己代码生成的, 把xib删除之后,就OK了;

PS:下面通过实例代码给大家分享UITableView SectionHeader 自定义section的头部。

具体代码如下所示:

  1. //自定义section的头部
  2. - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
  3. {
  4. UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(10, 0, 300, 30)];//创建一个视图
  5. UIImageView *headerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 0, 300, 30)];
  6. UIImage *image = [UIImage imageNamed:@"4-2.png"];
  7. [headerImageView setImage:image];
  8. [headerView addSubview:headerImageView];
  9. [headerImageView release];
  10. NSString *createTime = [self.keysArray objectAtIndex:section];
  11. createTime = [createTime stringByReplacingCharactersInRange:NSMakeRange(4, 1) withString:@"-"];
  12. createTime = [createTime stringByReplacingCharactersInRange:NSMakeRange(7, 1) withString:@"-"];
  13. UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(130, 5, 150, 20)];
  14. headerLabel.backgroundColor = [UIColor clearColor];
  15. headerLabel.font = [UIFont boldSystemFontOfSize:15.0];
  16. headerLabel.textColor = [UIColor blueColor];
  17. headerLabel.text = createTime;
  18. [headerView addSubview:headerLabel];
  19. [headerLabel release];
  20. return headerView;
  21. }
复制代码

总结

以上所述是小编给大家介绍的iOS11 SectionHeader 胡乱移动且滑动时出现重复内容的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对程序员之家网站的支持!



回复

使用道具 举报

关闭

站长推荐上一条 /1 下一条