我有一个UITableView
类型的普通表视图,其中包含两个部分和一个动态行数。
我还为节标题返回UIView
。
除非桌子重新加载,否则一切都很完美。节标题位置移动到随机位置,直到视图开始滚动。
标题视图和超级视图中的Autolayout似乎没有违反。
我已将表格页脚视图设置为nil
或显示分页动画。
表视图位于滚动视图中。
为节标题出现此故障的任何建议或解决方案。 而这个故障只发生在iOS 9中
答案 0 :(得分:4)
我的问题独立于刷新控制,尽管它是我的视图控制器的一部分。
它与estimatedRowHeight
和rowHeight
相关。
我找到了一个经验解决方案。我的问题发生在视图控制器和重新加载的tableview之间来回。
因为我的细胞高度可变,所以我有:
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44.0f;
所以我可以处理细胞自动调整大小。
显然问题出在estimatedRowHeight
上。当我用最大单元行高度更改值时,毛刺消失了。桌子部分不再跳跃了。我使用视图检查器根据我最糟糕的用例来计算行高。
我不知道它如何与千细胞一起表现。应该使用estimatedRowHeight
来计算整个内容偏移量,以便考虑最坏的情况
低效的。
在计算最大单元格高度时,请记住考虑系统首选项可以增加字体大小的情况,如果单元格已注册到这些更改。
答案 1 :(得分:1)
我的问题解决如下。
最初我添加了刷新控制器作为表视图的子视图。
_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];