问题标签 [asyncdisplaykit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
488 浏览

ios - 主队列上的调度障碍

所以我正在阅读 Facebook 很棒的AsyncDisplayKit源代码。具体来说,我正在阅读ASDealloc2MainObject背后的实现。一件事引起了我的注意。

_AS-objc-internal.h的第 423 到 424 行中,程序员将一些任务分派到主队列中。

与其他调度屏障函数的情况一样,屏障逻辑dispatch_barrier_async_f()仅在处理自定义并发队列时才有意义。对于全局并发队列和主队列,它的作用就像dispatch_async_f()屏障不起作用一样。

那么为什么在这里使用屏障呢?

0 投票
1 回答
1697 浏览

ios - 使用 ASNetworkImageNode 下载图像后从 AsyncDisplayKit 重新布局 ASTableView

上下文: 我正在使用 AsyncDisplayKit 加载包含文本和图像的表格。图像是从 Internet 下载的,图像大小在图像下载完成之前是未知的。

我正在尝试做 的事情:图像下载完成后,我想重新调整单元格的大小和布局以适应图像,然后重新调整表格的大小和布局以适应新的单元格高度。

到目前为止我所做的: 我最初仅使用文本绘制 ASTableView,并使用 ASNetworkingImage 委托方法 imageNode:didLoadImage 方法在图像下载完成时获得通知。

我能够成功地重新计算单个单元格的大小并重新布局并绘制单元格以适合下载的图像。

问题: 但是,接下来我需要重新布局表格以向下或向上移动其他单元格以适应更新单元格的新大小。这就是我无法工作的地方。

尝试 #1 将重新计算表格的子视图并重新布局,但这也会重新加载所有数据,这不是我想要的。我只想重新计算和重新布局单元格,而不是重新加载所有数据。

尝试#2:使用 UITableView 时,这样做会调用 tableView:heightForRowAtIndexPath 并重新布局所有表格单元格,但不幸的是,对于 ASTableView,这会引发未实现的异常。

问题: 我如何以编程方式使 ASTableView 重新布局本身并考虑新的单元格高度?

0 投票
0 回答
773 浏览

ios - 我在将 AsyncDisplayKit 添加到我的 Xcode 项目时遇到问题

过去我来过这里几次,希望能得到你们的帮助。

我在 Xcode 和 iOS 方面有经验,但我刚刚来了一个跨 cocoapods。

我想使用 AsyncDisplayKit 并且我已经将它添加到我的 podfile 中,就像他们在他们的网站上解释的那样:

我正在使用 Swift,所以我还有一个桥接文件,我在其中导入了如下文件:

一切都很好,直到我尝试创建一个使用“ASDisplayNode”的新类:

该类编译得很好,但无论如何我都会遇到一些错误:

xcode 编译器错误

我试图删除派生数据并清理项目。我还再次运行了“pod install”命令。这是我在项目构建阶段或构建设置中缺少的东西。我还包括了 ASyncDisplayKit 需要的框架。我必须包含任何其他文件或框架,或者为什么 Xcode 会给我这些错误?

我有 Xcode 6.1.1。谢谢。

0 投票
1 回答
3026 浏览

ios - 使用 AsyncDisplayKit 添加自定义按钮

我正在开发一个 IOS 应用程序。我使用 Facebook AsyncDisplayKit 库。我想在 ASNodeCell 中添加一个按钮 我得到“变量‘节点’在被块捕获时未初始化。如何在 ASNodeCell 中添加 UIButton 或 UIWebView 控件。请帮助我

在此处输入图像描述

0 投票
1 回答
1389 浏览

ios - 当我从 AsyncDisplayKit 将 UIImageView 添加到 ASCellNode 时应用程序崩溃

我正在使用 FacebookAsyncDisplayKit创建一个CollectionView这样CollectionView的,ASCollectionView我正在尝试添加UIKit's UIImageView到单元格中。我得到以下崩溃:

在崩溃的代码之后,这是ASCellNode我为我的ASCollectionView. 我正在尝试UIImageView添加ASCellNode

恐怕我可以将UIKit组件添加到ASCollectionView's ASCellNode. 我们不能在层次结构中添加UIKit组件是真的吗?ASCellNode's

0 投票
2 回答
1903 浏览

ios - 在 ASTextNode 周围添加填充

我正在使用AsyncDisplayKit(第一次)并且有ASTextNode一个ASCellNode. 想在ASTextNode. 我试图用 a 包装它,ASDisplayNode但每当我计算它的大小时,calculateSizeThatFits:它总是返回 0。任何建议都将不胜感激。子类中的代码ASCellNode是:

0 投票
1 回答
949 浏览

ios - 归档时无法识别快速桥接头中的框架导入

我使用 swift 桥接头将 Facebook AsyncDisplayKit 框架导入我的应用程序,如下所示:

它总是可以很好地构建和运行我的应用程序,但是当我去存档时,它给了我一个错误:

导入'找不到文件'

为什么存档时无法识别?

0 投票
3 回答
2858 浏览

ios - 归档我的项目时,“无法导入桥接头”、“找不到文件”

在使用快速桥接头和框架归档项目时,我遇到了一些麻烦。它给了我错误,但只有当我存档时。所以我做了一个新项目来进一步测试。

这是我的步骤:

  1. 新的快速项目。
  2. 添加一个objective-c文件。
  3. 当它提示我询问是否制作桥接头时,请按是。

此时,我存档。它成功了。

  1. 添加 ASyncDisplayKit.xcodeproj
  2. 将 libAsyncDisplayKit.a、AssetsLibrary 和 Photos 添加到“Link Binary With Libraries”构建阶段。
  3. 将“-lc++ -ObjC”添加到项目链接器标志。
  4. 添加#import <AsyncDisplayKit/AsyncDisplayKit.h>到桥接头。

这些是在此处找到的说明。

我再次存档,它失败了,有两个错误:

找不到“AsyncDisplayKit/AsyncDisplayKit.h”文件

无法导入桥接头“/Users/Andrew/Desktop/testProject/testProject/testProject-Bridging-Header.h”

这是可复制的。我似乎很好地遵循了他们的指示,除此之外我没有接触过这个项目。

有趣的是,它构建良好,运行良好。但是存档,它会给出这些错误。

任何帮助表示赞赏。

编辑:如果我使用 CocoaPods 导入它,它工作得很好。问题是我专门为我的项目使用子模块,而不是 CocoaPods。切换到同时使用这两种方法来解决这个问题会很混乱。

0 投票
6 回答
15193 浏览

ios - 单独重新加载单元格时 UITableViewCell 内容闪烁

我有一个链接到一个表视图NSFetchedResultController(即加载数据并跟踪对数据的更改绑定到 FRC)

我没有AutoLayout在我的单元格中使用(由于它在 iOS 8 中引入了巨大的性能下降)。我在单元格中手动布置单元格的内容(使用-(void)layoutSubviews)。另外,行的高度是根据内容计算的,并被正确缓存/失效。

如果与我的数据相关的任何条件发生变化,相关的单元格会单独更新(-(void)controllerWillChangeContent:...通过-(void)controllerDidChangeContent:...委托方法实现的整体)行更新的动画是:UITableViewRowAnimationNone

这里的问题是,我的单元格具有透明背景,并且在[self.tableView reloadRowsAtIndexPaths:...];.

我尝试了很多东西都无济于事!

以下是我尝试过但不起作用的事情:

  • 实施-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath,返回估计高度的准确值。
  • 设置self.tableView.rowHeight=UITableViewAutomaticDimension;,有很大帮助,但不能解决它。
  • 禁用动画后[self.tableView beginUpdates];启用[self.tableView endUpdates];
  • 从单元格内容中删除所有子视图-(void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

有一点帮助的事情:

  • 使单元格不透明(即为单元格设置背景颜色)。奇怪的是,工件似乎在实际的单元格内容之下。

更多信息

  • 我的大部分单元格内容都是来自AsyncDisplayKit(ASTextNode、ASImageNode)的节点,但是用它们的UIKit对应项替换它们并不能解决问题。
  • 我所有的视觉更新都发生在主线程上。我总是确保这一点。
  • 这个问题并不普遍,但经常存在。如果有帮助,它们似乎在插入第二个细胞后发生得更多。
  • 在我的单元格中记录该方法-(void)layoutSubviews表明,具有更新条件的单元格在每次更新时连续重新加载 3 次,而其他单元格只更新一次。我不会强迫任何[cell layoutIfNeeded];[cell setNeedsLayout];任何地方。
  • 使用重新加载整个表格视图[self.tableView reloadData];对我来说不是一个选项。

其他更多信息

  • 使单元格不透明会导致单元格只布置一次!奇怪的!

最后,很抱歉我不能分享任何实际的代码,因为它不是一个测试项目,并且实现的复杂性使得任何代码共享都是徒劳的,除非作为一个整体来理解。

谢谢你的时间。

0 投票
1 回答
361 浏览

ios - AsyncDisplayKit invalidateCalculatedSize Swift 不起作用

我有一个AsyncDisplayNode来自 Facebook 的 AsyncDisplayKit 框架。当我的应用程序发生数据更改时,可能需要更改该单元格的内容,我想通过调用invalidateCalculatedSize方法来发出更改信号,这应该会在下次显示节点时触发重新测量。

但是,Xcode 显示以下错误:

ASDisplayNode 没有名为“invalidateCalculatedSize”的成员

我尝试过的所有其他类型的节点也是如此,例如ASCellNodes 和ASTextCellNodes,即使我在 ASTextCellNode 的源代码中看到对invalidateCalculatedSize.

最重要的是,认为这可能是 Xcode Swift 自动完成问题,当我尝试编译时,构建失败并出现与上图相同的错误。那么,如何使节点大小无效?