我有一个UITableView
带有两个部分和动态行数的普通表视图。我还UIView
为节标题返回了一个。
除非重新加载表,否则一切正常。节标题位置移动到随机位置,直到视图开始滚动。
标题视图和超级视图中的自动布局似乎没有违反。我已经设置了表格页脚视图nil
或显示分页动画。表格视图位于滚动视图中。
为什么节标题会出现此故障的任何建议或解决方案。而且这个故障只发生在 iOS 9
我有一个UITableView
带有两个部分和动态行数的普通表视图。我还UIView
为节标题返回了一个。
除非重新加载表,否则一切正常。节标题位置移动到随机位置,直到视图开始滚动。
标题视图和超级视图中的自动布局似乎没有违反。我已经设置了表格页脚视图nil
或显示分页动画。表格视图位于滚动视图中。
为什么节标题会出现此故障的任何建议或解决方案。而且这个故障只发生在 iOS 9
对我来说,问题与刷新控制无关,尽管它是我的视图控制器的一部分。它与estimatedRowHeight
和相关rowHeight
。
我找到了一个经验性的解决方案。在视图控制器和重新加载的 tableview 之间来回切换时发生了我的问题。
因为我的细胞高度可变,所以我有:
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44.0f;
所以我可以处理单元格自动调整大小。显然问题出在estimatedRowHeight
. 当我用最大单元格行高度更改值时,故障消失了。桌子部分不再跳跃。我使用视图检查器根据我最糟糕的用例计算行高。
我不知道它对一千个细胞的表现如何。estimatedRowHeight
应该用于计算整个内容偏移量,因此考虑最坏的情况可能效率低下。
在计算最大单元格高度时,请记住考虑字体大小可以通过系统首选项增加的情况,如果单元格已注册到这些更改。
我的问题得到解决如下。
最初我添加了刷新控制器作为表视图的子视图。
_chatListRefreshControl = [[UIRefreshControl alloc] init];
_chatListRefreshControl.transform = CGAffineTransformMakeScale(0.7, 0.7);
[_chatListRefreshControl addTarget:self
action:@selector(refreshChatListView:)
forControlEvents:UIControlEventValueChanged];
[self.myChatsTableView addSubview:_chatListRefreshControl];
我已将其修改如下:将刷新指示器从表视图更改为表视图控制器的属性。
UITableViewController *chatTableViewcontroller = [[UITableViewController alloc] init];
chatTableViewcontroller.tableView = self.myChatsTableView;
_chatListRefreshControl = [[UIRefreshControl alloc] init];
_chatListRefreshControl.transform = CGAffineTransformMakeScale(REFRESH_INDICATOR_SCALE_FACTOR, REFRESH_INDICATOR_SCALE_FACTOR);
[_chatListRefreshControl addTarget:self action:@selector(refreshChatListView:) forControlEvents:UIControlEventValueChanged];
chatTableViewcontroller.refreshControl = _chatListRefreshControl;
[self addChildViewController:chatTableViewcontroller];