- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
上下文:我正在使用 AsyncDisplayKit 加载包含文本和图像的表格。这些图像是从 Internet 下载的,图像大小在图像下载完成之前是未知的。
我想做什么:图片下载完成后,我想调整单元格的大小和布局以适应图像,然后调整表格的大小和布局以适应新的单元格高度。
到目前为止我做了什么:我最初只用文本绘制 ASTableView 并使用 ASNetworkingImage 委托(delegate)方法 imageNode:didLoadImage 方法在图像下载完成时得到通知。
- (void)imageNode:(ASNetworkImageNode *)imageNode didLoadImage:(UIImage *)image {
// Scale image downloaded from Internet to fit constrained width
// Set networkImageNode to scaled image
UIImage *newimage = [self scaleImage:image toConstrainedWidth:CONSTRAINED_WIDTH];
self.networkImageNode.image = newimage;
// Gets the parent cell
// Recalculate cell size and layout the cell (This works!)
MyAsyncTableCellNode *parentCell = ASDisplayNodeFindClass(self, [MyAsyncTableCellNode class]);
[parentCell invalidateCalculatedSize];
[parentCell measure:CGSizeMake(CONSTRAINED_WIDTH, MAXFLOAT)];
[parentCell layout];
// Attempting to re-layout the table to shift the table cells
// to accommodate for the new cell height (ALL these do NOT work!)
MyAsyncTableViewController *parentTableViewController = ASDisplayNodeFindClass(self, [MyAsyncTableViewController class]);
// Attempt #1
[parentTableViewController.asyncTableView reloadData];
// Attempt #2
[parentTableViewController.asyncTableView beginUpdates];
[parentTableViewController.asyncTableView endUpdates];
}
我能够成功地重新计算单个单元格的大小并重新布局并绘制单元格以适合下载的图像。
问题:但是,接下来我需要重新布置表格以将其他单元格向下或向上移动以适应更新单元格的新大小。 这就是我无法开始工作的原因。
尝试 #1 将重新计算表格的 subview 并重新布局,但这也会重新加载所有数据,这不是我想要的。我只想重新计算和重新布局单元格,而不是重新加载所有数据。
尝试 #2:当使用 UITableView 时,这样做会调用 tableView:heightForRowAtIndexPath 并重新布局所有表格单元格,但不幸的是,对于 ASTableView,这会抛出一个未实现的异常。
问题:如何以编程方式重新布局 ASTableView 本身并考虑新的单元格高度?
最佳答案
您的第一次尝试应该是正确的,因为这会再次调用 numberOfSectionsInTableView、numberOfSectionsInTableView、nodeForRowAtIndexPath 方法,除非您指定(就像常规的 UITableView 那样),否则不应重新加载数据源。
关于ios - 使用 ASNetworkImageNode 下载图像后从 AsyncDisplayKit 重新布局 ASTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28419321/
这是我尝试过的代码,但是当图像尚未加载时,什么也没有显示(应该显示一个动画指示器)。显示事件指示器的最佳实践是什么?我连接到了 ASNetworkImageNodeDelegate。 import A
我正在创建自定义节点来显示带有播放和暂停按钮的 gif 文件。以下是我的代码。 import Foundation import AsyncDisplayKit class GifNode: ASCe
我有一个呈现 ASTableNode 的 ASViewController。 我想在每一行中使用一个 ASNetworkImageNode 来渲染图像。 我知道宽度/高度,所以能够正确设置比例。因此,
我在我的 swift 应用程序中使用 AsyncDisplaykit,在 collectionNode 中使用 ASNetworkImageNode 作为我的 ImageView 。我可以以出色的性能
上下文:我正在使用 AsyncDisplayKit 加载包含文本和图像的表格。这些图像是从 Internet 下载的,图像大小在图像下载完成之前是未知的。 我想做什么:图片下载完成后,我想调整单元格的
我是一名优秀的程序员,十分优秀!