Ios UITableViewCell高度和滚动问题的自动布局
我最近一直在开发一个聊天客户端。正如预期的那样,我需要有单元格的动态高度。为此,我使用了自动布局,并在Ios UITableViewCell高度和滚动问题的自动布局,ios,objective-c,uitableview,autolayout,ios-autolayout,Ios,Objective C,Uitableview,Autolayout,Ios Autolayout,我最近一直在开发一个聊天客户端。正如预期的那样,我需要有单元格的动态高度。为此,我使用了自动布局,并在UITableView self.tableview.estimatedRowHeight = 77.5f; self.tableview.rowHeight = UITableViewAutomaticDimension; 我还在tableView中使用inputAccessoryView,以便在底部有一个始终存在的UITextView,就像iPhone上的Messages应用程序一样con
UITableView
self.tableview.estimatedRowHeight = 77.5f;
self.tableview.rowHeight = UITableViewAutomaticDimension;
我还在tableView中使用inputAccessoryView
,以便在底部有一个始终存在的UITextView,就像iPhone上的Messages应用程序一样<当键盘出现时,tableView的code>contentInset被适当地设置,并且似乎工作得很好
当我尝试将tableView
滚动到底部时,问题就出现了
a)聊天是第一次加载
b)当收到新消息时
对于a)我已经尝试了各种技术,比如在viewDidLoad
中使用first,在viewdidearch
中使用dispatch\u after
或performSelector:withObject:afterDelay
动画和非动画的延迟滚动条。但它们只能在iOS 9上工作,而不能在iOS 8上工作
对于b)我将新的聊天信息添加到备份数据存储中,调用reloadData
,然后立即滚动到最后一行。它适用于iOS 9,但不适用于iOS 8。我还尝试了insertRowsAtIndexPaths
只插入一个新行。但是,它会在新添加的行和底部布局(即inputAccessoryView,带键盘或不带键盘)之间生成一个空白
在iOS 8上,行的一半仍然不可见,有时甚至是多行。我一开始滚动,它们就会调整
我认为在滚动时,tableView
可能错误地估计了行高。但是,实际行高度与预期一致。没有任何文本被剥离
ViewController本身是一个UIViewController
,但我创建了一个UITableViewController
实例,用于添加UIRefreshcontrol
显然,每当我在tableView
上调用“reloadData”时,除非我滚动一次,否则它不会正确地转到最后一行
已更新
显然,我必须在iOS 8上实现
tableView:heightforrowatinexpath:
,并手动确定每个单元格的高度。只有这样滚动才能正常工作。重新加载后,使用此代码滚动到最后一行
[tbl scrollToRowAtIndexPath:[NSIndexPath new] atScrollPosition:UITableViewScrollPositionBottom animated:YES];
您使用哪种代码转到最后一行?
滚动到indepath:animated:
传入最后一行nsindepath