欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS11 SectionHeader 胡乱移动且滑动时出现重复内容的解决方法

程序员文章站 2023-12-20 11:54:46
升级到ios 11后,痛苦的事情多起来了,以前版本没有的出现问题的代码,经过xcode 9一编译,千万*奔腾而过; 今天碰到一个奇葩问题,直接进入主题: 问题描述:...

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

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

问题描述:

-(cgfloat)tableview:(uitableview *)tableview heightforheaderinsection:(nsinteger)section
{
  return 12;
}
-(uiview *)tableview:(uitableview *)tableview viewforheaderinsection:(nsinteger)section
{
  uiview* headersection_v = [[uiview alloc]initwithframe:cgrectmake(zerodis, zerodis, screen_width, 12)];
  [headersection_v setbackgroundcolor:color_3];
  return headersection_v;
}

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

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

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

/**
 * 解决cell分割线距离两边12 居中对齐
 */
- (void)tableview:(uitableview *)tableview willdisplaycell:(uitableviewcell *)cell forrowatindexpath:(nsindexpath *)indexpath
{
  if ([cell respondstoselector:@selector(setseparatorinset:)]) {
    [cell setseparatorinset:uiedgeinsetsmake(zerodis, 12, zerodis, 12)];
  }
  if ([cell respondstoselector:@selector(setlayoutmargins:)]) {
    [cell setlayoutmargins:uiedgeinsetsmake(zerodis, 12, zerodis, 12)];
  }
}

最后排查发现:

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

ps:下面通过实例代码给大家分享uitableview sectionheader 自定义section的头部。

具体代码如下所示:

//自定义section的头部
- (uiview *)tableview:(uitableview *)tableview viewforheaderinsection:(nsinteger)section
{
  uiview *headerview = [[uiview alloc] initwithframe:cgrectmake(10, 0, 300, 30)];//创建一个视图
  uiimageview *headerimageview = [[uiimageview alloc] initwithframe:cgrectmake(10, 0, 300, 30)];
  uiimage *image = [uiimage imagenamed:@"4-2.png"];
  [headerimageview setimage:image];
  [headerview addsubview:headerimageview];
  [headerimageview release];
  nsstring *createtime = [self.keysarray objectatindex:section];
  createtime = [createtime stringbyreplacingcharactersinrange:nsmakerange(4, 1) withstring:@"-"];
  createtime = [createtime stringbyreplacingcharactersinrange:nsmakerange(7, 1) withstring:@"-"];
  uilabel *headerlabel = [[uilabel alloc] initwithframe:cgrectmake(130, 5, 150, 20)];
  headerlabel.backgroundcolor = [uicolor clearcolor];
  headerlabel.font = [uifont boldsystemfontofsize:15.0];
  headerlabel.textcolor = [uicolor bluecolor];
  headerlabel.text = createtime;
  [headerview addsubview:headerlabel];
  [headerlabel release];
  return headerview;
}

总结

以上所述是小编给大家介绍的ios11 sectionheader 胡乱移动且滑动时出现重复内容的解决方法,希望对大家有所帮助

上一篇:

下一篇: