iOS15.1 UITableViewCell 错乱问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS15.1 UITableViewCell 错乱问题相关的知识,希望对你有一定的参考价值。

参考技术A 啥也不是就是 static NSString *cellID = @"table_cellid" ;

cellID 设置的字符串一样了

检查tableview 代理查看

-( UITableViewCell *) tableView :( UITableView *)tableView cellForRowAtIndexPath :( NSIndexPath *)indexPath

  static NSString *cellID = @"table_cellid";



 ios 15 的 UITableView又新增了一个新属性:sectionHeaderTopPadding 会给每一个section header 增加一个默认高度

当我们 使用 UITableViewStylePlain 初始化 UITableView的时候,就会发现,系统给section header增高了22像素。

//解决办法

  if  ( @available (iOS  15.0 , *))

  self . tableView . sectionHeaderTopPadding  =  0 ;

   

3. tableView  顶部留白,如果设置了tableHeaderView  那么tableHeaderView  高度不能是0,设置0不管用还是会留白,设置0.001。

self.tableView.tableHeaderView 

4.  UITableView 类型是UITableViewStyleGrouped 的时候,设置tableFooterView 会导致UITableView顶部留白

//解决办法

1,不设置tableFooterView     _listtableView.tableFooterView = self.footerview;   

2,增加设置tableHeaderView 的高为CGFLOAT_MIN 注意设置高为0是不管用的  _listtableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];

iOS - UITableViewCell 被 UITabBar 覆盖

【中文标题】iOS - UITableViewCell 被 UITabBar 覆盖【英文标题】:iOS - UITableViewCell is covered by the UITabBar 【发布时间】:2011-12-09 04:08:51 【问题描述】:

根据下面的屏幕截图,最后一个 UITableViewCell 的一半被 UITabBar 覆盖:

我想更改为显示最后一个 UITableViewCell 的完整内容,如下所示,我该怎么做?

谢谢

更新

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    return [shopSection count];


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    return [cc getShopSectionRow:@"hk.xml" sectionForRow:section];


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    

    [cc getShopList:cell withXMLFile:@"hk.xml" withIndexPathSection:indexPath.section withIndexPathRow:indexPath.row];

    return cell;


- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section    
    return [cc getShopSectionTitle:section];


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

    return 50;

【问题讨论】:

【参考方案1】:

一种方法是使用从UIScrollView 继承的属性

内容插入 内容视图与封闭滚动视图之间的距离。 @property(nonatomic) UIEdgeInsets contentInset 讨论 使用此属性可添加到内容周围的滚动区域。大小的单位是点。默认值为 UIEdgeInsetsZero。

使用该属性,您可以在 UITabBar 的顶部插入表格视图。

您可以将 UITableView 的 Frame 更改为不在 UITabBar 下方

你能告诉我们 UITableViewController 和 UITabBarController 是如何设置的吗? 那里可能有问题。


当您说under 时,您的意思是这样的:

UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
UITableViewController *tt = [[TableTest alloc] initWithNibName:@"TableTest" bundle:nil];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, tt, nil];

要将您的 UIViewControllers 放在您的 UITabBarController 中?因为我测试了该代码并且它工作正常。

因为如果您真的是在下方,例如您的 UITableViewController 不在 self.tabBarController.viewControllers 中并且位于 taBar 下方,那么您将不得不选择我原始答案中的选项之一。

【讨论】:

@CharlesYeung 好的,但这不是我所要求的,您如何填充UITableView 对您的问题没有影响,但是您如何以及何时创建它是另一回事。您是否在代码中创建 UITableView,是否在 IB 中完成,如何?什么设置?你是把它放到UITabBar,还是其他的。 我在 Xocde 4 中通过 File > New File > UITableViewController 创建了 UITableView,使用 XIB 作为用户界面。所以tableview是在IB中创建的。我只是使用 TableView 的默认设置。它也放在 UITabBar 下。 我在 StoryBoard 中添加了视图控制器。在viewDidLoad 中设置 `self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 49, 0);` 后,问题得到解决。谢谢【参考方案2】:

您可以动态调整 UITableView 的高度,如类似问题中所述:UITableView partially hidden by UITabBar。

【讨论】:

【参考方案3】:

将 TableView 的高度降低 44 点,假设您已经在 loadView 中以编程方式创建了 tableView,然后 CGRectMake(0,0,320,460) 然后将 460 高度更改为 416 或在 Interface Builder xib 文件中。减少44分。 TabBar 覆盖在 tableView 的顶部,因此最后一个单元格似乎被 tabbarcontroller 重叠。

【讨论】:

以上是关于iOS15.1 UITableViewCell 错乱问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发UI篇—UITableviewcell的性能问题

IOS:UITableViewCell

iOS UITableViewCell点击时子视图背景透明的解决方法

iOS 13 UITableViewCell |子视图被剪掉

浅析iOS开发中UITableViewCell的复用机制

IOS7上的Tableview字幕