amb*_*amb 7 iphone uitableview ios ios5
我试图模仿iMessage泡沫文本行为UITableView.为了始终滚动到底部我正在使用scrollToRowAtIndexPath时viewDidLoad和viewDidAppear.这是因为当viewDidLoad调用该方法时,该表尚未完全加载,因此我需要额外的滚动viewDidAppear.这段代码就是诀窍.但是,我想要的不是动画滚动(设置animated为NO不解决此问题),我希望表格始终从底部显示,而不是加载表格然后转到最后一行.
这可能吗?我找不到任何完全符合所需行为的解决方案.
Chr*_*cou 23
这是最好的解决方案!
只需扭转一切!
tableView.transform = CGAffineTransformMakeRotation(-M_PI);
cell.transform = CGAffineTransformMakeRotation(M_PI);
Run Code Online (Sandbox Code Playgroud)
Swift 4.0:
tableView.transform = CGAffineTransform(rotationAngle: -CGFloat.pi)
cell.transform = CGAffineTransform(rotationAngle: CGFloat.pi)
Run Code Online (Sandbox Code Playgroud)
但要小心,因为现在headerView和footerView位置也是相反的.
您可以避免来自viewDidLoad的调用,因为从viewDidAppear中滚动会使第一个调用变为冗余.每次导航回视图时都会调用viewDidAppear,但只在初始化视图时调用viewDidLoad一次.
我同意早先从用户隐藏滚动的建议,而不是改变UITableView加载数据的方式.我的建议是在viewWillAppear方法中使用scrollToRowAtIndexPath方法,并将动画设置为NO.之后,如果您必须在表对用户可见时添加新行,请使用insertRowsAtIndexPaths:withRowAnimation:在表视图的底部添加一行.一定要注意在数据模型的末尾添加数据,这样当用户导航并返回时,他/她会回到相同的布局.
希望这可以帮助.
编辑:刚刚看到你不接受以前的答案的理由,并认为我会详细说明一点.我建议的解决方案需要尽可能少的工作,避免一次又一次地调用reloadData,从而避免一次又一次地调用scrollToRowAtIndexPath方法.您只需要在viewWillAppear中对scrollToRowAtIndexPath进行一次调用,以滚动到表视图的底部(在执行此操作时隐藏用户的转换),您不需要再次执行此操作.
| 归档时间: |
|
| 查看次数: |
13565 次 |
| 最近记录: |