动画 UICollectionView contentOffset 不显示不可见单元格

2024-01-06

我正在开发一些类似股票行情的功能,并且正在使用UICollectionView。它最初是一个滚动视图,但我们认为集合视图将使添加/删除单元格变得更容易。

我使用以下内容对 collectionView 进行动画处理:

- (void)beginAnimation {
    [UIView animateWithDuration:((self.collectionView.collectionViewLayout.collectionViewContentSize.width - self.collectionView.contentOffset.x) / 75) delay:0 options:(UIViewAnimationOptionCurveLinear | UIViewAnimationOptionRepeat | UIViewAnimationOptionBeginFromCurrentState) animations:^{
        self.collectionView.contentOffset = CGPointMake(self.collectionView.collectionViewLayout.collectionViewContentSize.width, 0);
    } completion:nil];
}

这对于滚动视图效果很好,并且动画正在集合视图中发生。但是,实际上仅渲染动画结束时可见的单元格。调整 contentOffset 不会导致cellForItemAtIndexPath被称为。当 contentOffset 改变时,如何让单元格渲染?

编辑: 更多参考(不确定是否有很大帮助):

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    TickerElementCell *cell = (TickerElementCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"TickerElementCell" forIndexPath:indexPath];
    cell.ticker = [self.fetchedResultsController objectAtIndexPath:indexPath];
    return cell;
}

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {

    // ...

    [self loadTicker];
}

- (void)loadTicker {

    // ...

    if (self.animating) {
        [self updateAnimation];
    }
    else {
        [self beginAnimation];
    }
}

- (void)beginAnimation {

    if (self.animating) {
        [self endAnimation];
    }

    if ([self.tickerElements count] && !self.animating && !self.paused) {
        self.animating = YES;
        self.collectionView.contentOffset = CGPointMake(1, 0);
        [UIView animateWithDuration:((self.collectionView.collectionViewLayout.collectionViewContentSize.width - self.collectionView.contentOffset.x) / 75) delay:0 options:(UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionRepeat | UIViewAnimationOptionBeginFromCurrentState) animations:^{
            self.collectionView.contentOffset = CGPointMake(self.collectionView.collectionViewLayout.collectionViewContentSize.width, 0);
        } completion:nil];
    }
}

你应该简单地添加[self.view layoutIfNeeded];在动画块内,如下所示:

[UIView animateWithDuration:((self.collectionView.collectionViewLayout.collectionViewContentSize.width - self.collectionView.contentOffset.x) / 75) delay:0 options:(UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionRepeat | UIViewAnimationOptionBeginFromCurrentState) animations:^{
            self.collectionView.contentOffset = CGPointMake(self.collectionView.collectionViewLayout.collectionViewContentSize.width, 0);
            [self.view layoutIfNeeded];
        } completion:nil];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动画 UICollectionView contentOffset 不显示不可见单元格 的相关文章

  • 使用 cordova 工具集构建应用程序时出错

    我正在使用 Visual Studio 2017 社区版 并且只需使用 vs 文档中的步骤即可使用 macincloud 服务进行远程构建 我基本上遇到了以下明确的错误 来自构建服务器的远程构建错误https xxxx macincloud
  • 使用 Xcode 6 XLIFF 导出的 iOS 本地化/国际化设置 Bungle

    背景 Xcode 6 添加了快速导出功能 可为每种语言创建单个 XLIFF 文件 只需从文件导航器中选择您的项目 然后选择菜单项编辑器 导出以进行本地化 Issue 它工作得非常好 并且 XML 中包含了所有内容 除了设置捆绑字符串 有人有
  • 如何使 CSS 动画/过渡以固定速度而不是固定持续时间播放? [复制]

    这个问题在这里已经有答案了 我有一个 CSS 动画 可以使元素沿直线移动未定义的距离 据我所知 动画具有固定的持续时间 因此无论元素必须移动多远 动画始终需要相同的时间来运行 我该如何制作才能使动画没有固定的duration 但有固定的运动
  • Swift - 带循环的多个链 http 请求

    两天以来 我感觉我正在搜索整个网络来解决多个 http 请求的问题 所以我的工作流程如下所示 将图像上传到服务器 响应 XML 格式和任务 ID 使用任务 ID 向服务器发出 GET 请求 以检查该任务的状态 响应 XML 格式 其中状态可
  • UIPopViewController 不工作

    我有一个 xib 文件 其中有 h 和 m 链接 在 xib 中有一个带有 textView 的 UIView 我想要对该视图执行的操作是 当您单击按钮时将其作为 UIPopViewController 打开 这是我的代码 IBAction
  • 如何在 iOS 11 上的 Swift 中获取 FLAC 文件元数据?

    我需要获取 FLAC 文件的元数据 我尝试了以下代码 let item AVPlayerItem url URL fileURLWithPath path let commonMetadata item asset commonMetada
  • 发布后更新 iOS 应用程序描述而不更改应用程序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 一个应用程序在iTunes商店发布后 是否可以更改该应用程序的描述而无需再次更新整个应用程序 那么是否可以更改图像或描述文本 保存更改并更
  • iOS 8 启动图像文件 - 导航栏和状态栏

    我正在使用 Interface Builder 制作 iOS 8 的启动图像文件 我想要的启动图像非常简单 我认为与 设置 应用程序相同 顶部的导航栏带有一个空的分组 TableView 无标题等 请注意 我通常不使用 Interface
  • 更改从 xib 加载的 UITableViewHeaderFooterView 上的背景颜色表示使用 contentView.backgroundColor

    I m 从 xib 文件创建 UITableViewHeaderFooterView https stackoverflow com a 20073742 35690 几乎一切都工作正常 问题是 现在当我尝试更改背景颜色 或者如果我在 xi
  • 在 iOS 7 上需要具有非半透明栏的 WantsFullScreenLayout 行为

    我希望能够让我的视图覆盖整个屏幕 位于导航栏和工具栏后面 并将导航栏和工具栏的半透明属性设置为NO 我想要不透明的条 在 iOS 7 之前 这很容易通过设置来完成wantsFullScreenLayout是 然而 在 iOS 7 中 我找不
  • 使用 AVVideoCompositionCoreAnimationTool 在 CALayer 中将视频与静态图像混合

    我正在尝试将来自相机的视频与静态图像 水印 混合 我已经检查了这里的问题 答案和一些示例 包括来自 Apple 的 WWDC AVEditDemo 并以以下代码结束 不幸的是 导出的视频不包含带有图像的图层 有任何想法吗 void imag
  • 身份验证后如何退出 Google

    所以我的应用程序可以选择使用 Google 登录 单击 Google 提供的按钮后 将打开一个 Web 视图并让用户输入其凭据 允许应用程序访问其信息后 应用程序将用户登录并将 SignInViewController 更改为 TabBar
  • iOS 11 /“Apps-prefs=root”功能在更新到 Swift 3 后不起作用

    我对 Swift 编程还很陌生 我制作了一个简单的测试应用程序 可以通过特定按钮以编程方式打开设置 不幸的是 更新按钮后 没有打开所需的设置页面 在本例中为 wifi 页面 而是仅打开通用设置屏幕 有人可以帮助我了解 swift 4 中究竟
  • 如何阻止 Xamarin 在启用位码的情况下构建我的应用程序?

    在我的 iOS 版本的配置中 没有禁用位码的选项 在 Xcode 中可以设置 ENABLE BITCODE NO 我需要这个 因为我的链接框架不是用位码构建的 而且现在苹果不再允许半位码编译的应用程序 In your csproj对于您的
  • 识别用户是否在 iOS 6 设置中定义了本机 Facebook 帐户

    有没有办法通过 FACEBOOK SDK 3 1 和 iOS 6 知道用户是否在 iPhone 设置中定义了其 Facebook 帐户以供本机 Facebook 使用 我想要做的是 当打开我的应用程序时 如果用户在 iPhone 设置中定义
  • MVVM 在 iOS 中的使用

    我是一名 iOS 开发人员 我对我的项目中存在大量视图控制器感到内疚 因此我一直在寻找更好的方法来构建我的项目 并遇到了 MVVM 模型 视图 视图模型 架构 我读了很多关于 iOS 的 MVVM 文章 但有几个问题 我将用一个例子来解释我
  • iOS 框架问题:类在两者中均实现

    我正在开发一个使用第三方框架类的iOS框架项目 所以我在下面添加了第三方框架链接的框架和库部分 当我在 iOS 应用程序项目中添加自定义框架时 每个类都会收到此警告 objc 3139 类 class name 在两者中均实现 privat
  • 在原始颜色和设置颜色之间设置动画背景

    我有带有随机初始背景颜色的 HTML 元素 我需要在原始 初始 和新元素之间对选定元素的背景颜色进行动画处理 我一直在尝试使用 keyframes blink red 0 background color initial color ini
  • iOS Javascript 引擎 parseFloat(1) 返回负数

    这段代码将使错误出现 function causeBug d var k var n parseFloat 1 var c Math abs d if n lt 0 k else k return k n function for var
  • 不同形状的图像拼贴

    我对照片编辑应用程序开发完全陌生 我如何开发这样的网格样式 以便我可以添加从相机胶卷中选取的多个图像来创建拼贴画 我浏览了下面的链接 但没有找到实现这一目标的方法 任何建议或链接都 会有帮助 LINK1 https stackoverflo

随机推荐

  • R 中逻辑回归的交互[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在 R 中使用函数 glm 运行逻辑回归 我想添加两个自变量之间的交互作用 并且我知道我可以使用 或 来链接这两个术语 示例 我有一个分
  • 直接打开 Xserver 的套接字

    我希望了解 Linux 桌面环境如何与 Xserver 配合使用 我读到大多数窗口管理器不直接打开套接字 而是使用 Xlib 绑定 来编写 WM 的任何语言 或者您可以使用更高级别的绑定 XCB 但我想知道直接向 Xserver 打开套接字
  • 如何将按钮添加到功能区上预先存在的选项卡 (C#)?

    我已成功创建一个新选项卡并将其放在先前存在的选项卡旁边 然后我意识到它上面只有一个按钮 因此 目前 将其放在 主页 选项卡上更有意义 但并没有真正发挥作用 我尝试遵循指南和步行槽 我得到了一个 XML 并将其 XML 更改为以下内容
  • ggplot2和其他函数(R)之间的加号[重复]

    这个问题在这里已经有答案了 我试图得到这个例子 ggplot mpg aes displ hwy geom point 有人可以解释一下这两个函数之间发生了什么吗 ggplot2 是否重载 加 运算符 总结这2个结果是什么 它被分配给什么
  • 如何使用 Vue3 中的设置存储语法在 Pinia 存储中使用 `useRoute`/`useRouter`?

    我一直在尝试让我的 Pinia 商店在 Vue 3 中启动并运行 这一切都非常轻松 直到我想访问 url 中的一些参数 我有一家商店 简化 如下所示 import defineStore from pinia import useRoute
  • 如何从 iOS AVAudioRecorder 获取正确比例的分贝读数?

    我正在尝试使用 AVAudioRecorder 获取 iOS 应用程序中的噪音级别 我正在使用的代码是 self recorder updateMeters float decibels self recorder averagePower
  • 如何向datagridview添加过滤器

    我正在尝试将 csv 文件加载到 datagridview 现在我想向 datagridview 添加过滤 怎么做 这是我读取和加载 csv 文件的方法 openFileDialog1 InitialDirectory C openFile
  • 如何在 XCode 的 Interface Builder 中定义颜色?

    我想在 Interface Builder 中的元素之间复制颜色或使用 RGB 值定义它们 例如 我想将一个按钮的背景颜色复制到另一个按钮而不重复该按钮 或者 在 Interface Builder 中输入准确的 RGB 代码就足够了 这样
  • JQuery .slideDown() 向上滑动

    这有效 但我不知道为什么 在function capIn 我心中的那条线 botcap slideDown slow 应该将 div 向下滑动 它会将其向上滑动 如果我尝试使用 slideUp 没有任何反应 就像它试图将其滑落一样 谁能向我
  • 如果页面没有回发

    我知道这个 if IsPostBack do something 但是 如果页面未回发我需要执行某些操作怎么办 我使用其他还是有其他 更好的方法 最明显的解决方案可能如下所示 if IsPostBack It is a postback e
  • PHP Dom 无法检索元素

    code h1 Galeria h1 div class galeria ul li img src img jpg width 350 height 350 br Teste li ul div dom new DOMDocument d
  • CakePHP - 如何将 html css 助手链接到不同的文件夹

    目前我正在使用它来加载我的 CakePHP 项目中的 css echo this gt Html gt css jquery ui null array inline gt false 假设我将 css 文件放在 css 文件夹中 但是 我
  • 关于性能和 Java 互操作性:Clojure 与 Scala

    我已经阅读过有关 Clojure 与 Scala 的各种报道 同时我意识到两者都有自己的位置 在比较 Clojure 和 Scala 时 有一些考虑因素我还没有获得完整的解释 1 两种语言中哪一种通常是faster 我意识到这会因一种语言特
  • C# Regex 匹配标签之间的任何文本,包括换行符

    这是我的正则表达式 START OK END 我想获取其中包含的任何文本 START OK and END 然而 当我的文字包含一些 r n字符 我的正则表达式与它不匹配 怎样才能让它发挥作用呢 使用单行模式 http msdn micro
  • Google 地图 V3:仅显示一些标记

    我有以下代码 它应该显示数组中位置的多个标记 单击时每个标记将显示一个信息窗口 一切正常 除了在 21 个位置中我只能显示 8 个标记 declare Variables var geocoder var map var tex var m
  • Maven:如何将代表中不可用的 jar 包含到 J2EE 项目中?

    在我的 J2EE 项目中 我有几个依赖项 它们在任何 Maven 存储库中都不可用 因为它们是专有库 这些库需要在运行时可用 因此必须将其复制到 target WEB INF lib 现在 我将它们列为 POM 中的系统依赖项 但使用此方法
  • 如何使用 bufferedreader/writer 在 java 中复制图像

    File file new File download png File newfile new File D Java png BufferedReader br null BufferedWriter bw null try FileR
  • Android WorkManager:无法从PeriodicWorkRequest获取输出数据

    由于某些原因 我无法从 Android WorkManager 的PeriodicWorkRequest 获取输出数据 工作线程按预期定期运行 只是不返回任何数据 我的主要活动 Override protected void onCreat
  • 如何“过滤”JSON 以获得唯一的键名/值对?

    我有一些 JSON 数据 它为我提供了包含 lat lng 等信息的语言列表 它还包含我用于图标的组值 我想用它构建一个图例 JSON 看起来像这样 markers language Hungarian group a value yes
  • 动画 UICollectionView contentOffset 不显示不可见单元格

    我正在开发一些类似股票行情的功能 并且正在使用UICollectionView 它最初是一个滚动视图 但我们认为集合视图将使添加 删除单元格变得更容易 我使用以下内容对 collectionView 进行动画处理 void beginAni