>在将对象插入UItableVIEw之前,通过“测试”对象来预先计算对象高度.当新对象变为可用时,创建一个“虚拟”UItableVIEwCell并将其绘制在屏幕外,从而计算对象的高度并保存以供日后使用.问题在于,当然,我们只能对主线程进行高度测试(因为我们需要绘制),这会导致应用程序出现严重延迟. @H_419_7@到目前为止,我的解决方案是使用#2,但试图通过使其高度测试仅每1/4秒发生一次来缓解问题,这有助于“空出”测试,以便主线程没有锁定太多.但是,该解决方案不够优雅,仍会导致滞后问题,尤其是在旧设备上.滞后很糟糕,我真的需要一个更好的解决方案.解决方法 为了计算高度,this和 this answer建议您可以使用CGLayer在后台线程中进行屏幕外绘制.
Link to iOS documentation to CGLayer. @H_419_7@ @H_419_7@要根据单元格中显示的某些数据ID缓存高度,您可以使用以下代码: @H_419_7@
-(CGfloat)tableVIEw:(UItableVIEw*)tableVIEw heightForRowAtIndexPath:(NSIndexPath*)indexPath{ Nsstring* objectID = [self getobjectIDForPath:indexPath]; if (![self->IDToCellHeight objectForKey: objectID]) { CGfloat height = [object calculateHeightForID:objectID]; [self->IDToCellHeight setobject:[NSNumber numberWithfloat:height] forKey: objectID]; } return [[self->IDToCellHeight objectForKey:objectID] floatValue];}@H_419_7@当然,第一次抽奖仍然必须在不知道确切高度的情况下完成,但如果您无法根据显示的数据计算高度,则没有解决方法. 总结
以上是内存溢出为你收集整理的iphone – iOS:为UITableView预先计算行高全部内容,希望文章能够帮你解决iphone – iOS:为UITableView预先计算行高所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)