UIScrollView 滚动事件阻止 UIView 动画

2024-02-03

我有一组 UIImageView 的动画,它们代表当前值并不断向上滴答作响...理想情况下永远不会停止,视图中也是一个滚动视图或滚动视图,每当我滚动或缩放滚动视图时,动画都会停止,并且当scrollView完全停止移动时再次启动。我相信这是由于线程问题,因为重绘元素都发生在主线程上,起初我尝试了 UIView 动画,然后甚至核心动画都没有效果......有没有办法鱼与熊掌兼得?

任何和所有的帮助将不胜感激

代码如下

- (void)TestJackpotAtRate:(double)rateOfchange
{
    double roc = rateOfchange;

    for (int i = 0; i < [_jackPotDigits count]; ++i)
    {
        roc = rateOfchange/(pow(10, i));

        UIImageView *jackpotDigit = [_jackPotDigits objectAtIndex:i];

        float foreveryNseconds = 1/roc;

        NSDictionary *dict = @{@"interval"      :   [NSNumber numberWithFloat:foreveryNseconds],
                           @"jackPotDigit"  :   jackpotDigit
                           };

        [NSTimer scheduledTimerWithTimeInterval:foreveryNseconds target:self selector:@selector(AscendDigit:) userInfo:dict repeats:YES];
    }
}

-(void)AscendDigit:(NSTimer*)timer
{
    NSDictionary *dict = [timer userInfo];

    NSTimeInterval interval = [(NSNumber*)[dict objectForKey:@"interval"] floatValue];
    UIImageView *jackpotDigit = [dict objectForKey:@"jackPotDigit"];

    float duration = (interval < 1) ? interval : 1;

    if (jackpotDigit.frame.origin.y < -230 )
    {
        NSLog(@"hit");
        [timer invalidate];
        CGRect frame = jackpotDigit.frame;
        frame.origin.y = 0;
        [jackpotDigit setFrame:frame];

        [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(AscendDigit:) userInfo:dict repeats:YES];
    }

    [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^
     {
         CGRect frame = [jackpotDigit frame];

         double yDisplacement = 25;

         frame.origin.y -= yDisplacement;

         [jackpotDigit setFrame:frame];

     }
                      completion:^(BOOL finished)
     {

     }];

}

As danypata https://stackoverflow.com/users/2315974/danypata/通过此线程在我的评论中指出当 UIScrollView 滚动时,我的自定义 UI 元素不会更新 https://stackoverflow.com/questions/4109898/my-custom-ui-elements-are-not-being-updated-while-uiscrollview-is-scrolled/4136988#4136988它与 NStimer 线程有关,而不是与动画线程有关,或者如果有人可以澄清的话,可能两者都有关。在任何情况下,当滚动时,似乎所有滚动事件都独占主循环,解决方案是将用于执行动画的计时器置于相同的循环模式中,即UITracking循环模式 http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/doc/constant_group/Run_Loop_Mode_for_Tracking所以它也可以在滚动时使用主循环......

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:foreveryNseconds target:self selector:@selector(AscendDigit:) userInfo:dict repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

Tada.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIScrollView 滚动事件阻止 UIView 动画 的相关文章

  • iOS Safari Mobile 禁用上一个和下一个选择输入

    上周五我发现了关于此问题的类似问题 但似乎无法再次找到它 如果有人能指出我正确的方向 那就太好了 本质上我在一个页面上有多个选择菜单 第一个在加载时填充 第二个在第一个选择时填充 够简单的 但是 在 iOS 设备中 当您点击选择元素时 它会
  • UITableView:显示 tableFooterView 时运行代码?

    我正在使用 UIView表页脚视图 http developer apple com library ios documentation uikit reference UITableView Class Reference Referen
  • NSString stringWithContentsOfFile 失败,错误代码似乎错误

    我正在尝试将文件加载到字符串中 这是我正在使用的代码 NSError error nil NSString fullPath NSBundle mainBundle pathForResource filename ofType html
  • iOS - 如何在 swift 中使用 `NSMutableString`

    我已经看过这段 Objective C 代码 但我很难在 swift 中做同样的事情 NSMutableAttributedString res self richTextEditor attributedText mutableCopy
  • 使用多线程并行化 Java 中的 for 循环

    我对java很陌生 我想使用执行器服务或使用java中的任何其他方法并行化嵌套for循环 我想创建一些固定数量的线程 这样CPU就不会完全被线程占用 for SellerNames sellerNames sellerDataList fo
  • 如何制作带有 SWIFT 图像的弹出窗口

    我想知道如何制作类似于此示例的弹出窗口 原始窗口充满了按钮 选择这些按钮后将拉出我想要使用的图像 我会简单地创建一个可重用的UIView组件以及作为子视图所需的一切 例如UIImageView为了你的形象 UILabel or a UIBu
  • 错误域=kAFAssistantErrorDomain 代码=209“(空)”

    我面临着一个问题SFSpeechRecognizer 启动应用程序几秒钟后 我开始收到错误消息 错误域 kAFAssistantErrorDomain 代码 209 空 和 错误 域 kAFAssistantErrorDomain 代码 2
  • CALayer边框奇怪问题

    我正在向 CALayer 添加边框 但有一些奇怪的行为 在我应用的边框之后出现模糊边框 参见屏幕截图 这是我的代码 void configureLabel self hidden YES self textAlignment NSTextA
  • C# 中什么时候应该使用 volatile 关键字?

    谁能提供一个很好的解释volatile https learn microsoft com en us dotnet csharp language reference keywords volatileC 中的关键字 它解决了哪些问题 没
  • dyld:无法加载插入的库

    当我尝试运行 UI 和单元测试时 出现异常 dyld 无法加载插入的库 private var containers Bundle Application AutoTestingApp app Frameworks IDEBundleInj
  • 在 iPhone 3GS 与 iPhone 4 上为 Mobile Safari 嵌入 HTML5 视频

    我在服务器上的 mp4 文件中有 H 264 AAC 编码的视频 mime 类型的视频 mp4 添加到 Web 服务器 IIS 7 并且我有一个带有视频标签的页面
  • 从命令行添加 Xcode 开发者帐户

    我正在尝试使用xcodebuild allowProvisioningUpdates在我只能通过命令行访问的计算机 Azure Devops macOS 托管计算机 上 不幸的是 根据man xcodebuild为了使用 allowProv
  • 用户验证 Facebook 后未调用应用程序打开 Url 方法

    我已将 ios 应用程序中的 facebook 升级到 3 0 并使用提供的代码https developers facebook com docs howtos login with facebook using ios sdk http
  • iOS 7 上 Safari 浏览器的用户代理

    我只想在带有 Safari 浏览器的 iPhone 和 iPod 中打开我的网站 对于 Chrome Dolphin 等任何其他浏览器 它不应该打开 但目前我从几乎所有设备获得相同的用户代理 对于Safari User Agent Stri
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • 在实例化对象之前是否可以检查故事板中是否存在标识符?

    在我的代码中我有这一行 但我想知道是否有办法检查是否 一些控制器 在我将它与 一起使用之前就存在实例化ViewControllerWithIdentifier 方法 如果标识符不存在 则应用程序崩溃 如果没有好的方法 这并不是一个大问题 我
  • 如何在 UICollectionView 中将行居中?

    我有一个UICollectionView与随机细胞 有什么方法可以让我将行居中吗 默认情况下它是这样的 x x x x x x x x x x x x x x 这是所需的布局 x x x x x x x x x x x x 我必须做这样的事
  • 在 Swift 中从 Parse 加载图像

    我成功地将数据从 Parse 提取到 swift 中 但我的图像似乎没有按照我的方式工作 在我的 cellForRowAtIndexPath 方法中 我执行以下操作 var event AnyObject eventContainerArr
  • 更改 iOS7 中 UIAlertView 的字体大小

    我想更改alertView中消息文本和标题文本的字体大小 苹果网站上没有任何文档谈到这一点 但苹果在其子类注释中表示 UIAlertView 类旨在按原样使用 请参考以下链接 https developer apple com librar
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 在 AWS Elastic Beanstalk 上使用 Django 自动设置 Apache Solr - Oscar

    我需要确保阿帕奇 索尔 https lucene apache org solr 与我的 django oscar 应用程序一起安装 并且一直在使用这些指示 http django oscar readthedocs org en late
  • 根据输入值设置 jQuery 日期范围选择器的日期

    https github com longbill jquery date range picker https github com longbill jquery date range picker 我一切都工作得很好 但我似乎无法让选
  • 如何在启动操作系统之前进行一些安全验证?

    我有一个可启动闪存盘 其中包含定制的 Ubunto 我想将闪存盘传递给未知的人 但它存在一些安全问题 我想确保未知的人无法更改闪存盘内容 因此 我想计算闪存内容的哈希值并在每次启动时验证它 并在验证失败或哈希不匹配时防止启动操作系统 为此
  • 如何更改Android SeekBar轨道开始位置?

    我想设置SeekBars的轨道起始位置 因此它不会从搜索栏的左侧开始 而是形成任意位置 这是一张 Photoshop 图像 它应该是这样的 http i imgur com QCMEu png https i imgur com QCMEu
  • Cim_PhysicalMemory 和 Win32_ComputerSystem 返回不同的内存量

    我正在尝试编写一个 PowerShell 脚本来显示服务器 具有 512 GB 的物理服务器 中安装的内存量 我尝试了三种不同的方法 得到了不同的结果 Win32 PhysicalMemory https msdn microsoft co
  • 如何将 tabs.executeScript 与 React 一起使用

    在我的一个组件中 当加载该组件时 我希望我的扩展将脚本注入到运行该扩展的当前选项卡中 该脚本本质上获取源代码并将其保存为字符串 所以 在我的componentWillMount我尝试通过以下方式注入脚本 componentWillMount
  • 解析宏变量名称中包含 %eval 的宏,SAS

    这是一个玩具示例 旨在帮助解决我遇到的更大问题 它本质上涉及在引用更大的宏变量名称时使用 eval 宏 我创建了一个宏变量 x 2 它使用循环 it 的值 从最终输出可以看出该变量已成功创建 但是我只能将其放入日志而不评估 it 1 这当使
  • 是否有贝叶斯信念网络框架“Infer.NET”的 java 替代品?

    java 是否可以替代贝叶斯信念网络框架 Infer NET 如果它具有可扩展性 大型数据集的在线学习 良好的支持 自 2010 年以来最新更新 开源且易于编写网络结构 则更好 所有功能均来自 Infer NET 你也许还应该考虑Samia
  • 应用程序最小化时的 Electron win.flashFrame() 方法

    win flashFrame 使托盘图标闪烁 直到单击该图标并且应用程序窗口再次回到焦点 在 Windows 10 上 但是 如果应用程序最小化 闪烁会在几秒钟后自动结束 甚至无需单击图标 我怎样才能防止这种情况发生 如果窗口最小化 用户将
  • 对对象列表进行排序的算法

    假设您有一个对象列表 用户在工作时几乎使用所有对象 如何对对象列表进行排序 以便列表适应用户最常使用的顺序 您可以使用什么算法来实现这一点 编辑 许多答案建议计算对象的使用次数 这是行不通的 因为所有对象都使用相同的数量 只是顺序不同 在你
  • 在 iPhone UITextView 上打字(如 Twitter)时建议 # 个标签

    我正在构建一个使用主题标签的应用程序 例如 Twitter 或 Tweetbot 当您输入消息时 如果您输入主题标签符号 我会建议与您当前输入的标签相匹配的标签 我已经弄清楚如何让 UITableView 出现并显示主题标签列表 但我不知道
  • 修改音频样本缓冲区的音量增益

    我想增加语音数据缓冲区的音量 重点是我正在使用 DirectSound 并且我有一个主要缓冲区和一个辅助缓冲区 所有流混合都是手动完成的 在语音聊天中 所有参与者都可以拥有独立的音量级别 我将每个流数据乘以一个值 增益 并将其求和到一个缓冲
  • 如何使用键盘快捷键向上/向下移动 Jupyter 笔记本单元格?

    有人知道在 Jupyter 笔记本中向上或向下移动单元格的键盘快捷键吗 找不到捷径 有什么线索吗 以下解决方案适用于 JupyterLab 我目前拥有版本 2 2 6 您必须首先打开键盘快捷键配置文件 在 JupyterLab 中 您可以在
  • Jetty 7:为 Start.java 配置 JNDI

    遵循 Wicket 1 5 的指导 我将项目从 Jetty 6 1 25 转换为 7 5 0 v20110901 我现有的Start java包含以下设置 我用它来配置 JNDI EnvConfiguration envConfigurat
  • Javamail ISO-8859-1 格式

    我使用 Javamail Api 为我的 Android 手机制作了一个电子邮件客户端 如果我尝试使用以下方法获取发件人的邮件地址和收件人的邮件地址 Address froma m getFrom String from InternetA
  • React-chartjs-2 与 ChartJs 3:错误“arc”不是注册元素

    我正在开发一个 React 应用程序 我想在其中显示图表 我尝试使用react chartjs 2 但我找不到让它工作的方法 当我尝试使用 Pie 组件时 出现错误 Error arc is not a registered element
  • StringBuilder.ToString() 的复杂性是多少

    在 C 中 复杂度是多少StringBuilder ToString 是 O 1 O N 还是其他 不同框架版本有所不同 在旧版本中StringBuilder工作于string直接 所以没有额外费用 ToString 它只是直接向您提供数据
  • 创建自定义错误消息 MySQL

    在 MySQL 中 如何为此错误消息创建自定义消息 无法删除或更新父行 外键约束失败 database jenis fasum 约束jenis fasum ibfk 1外键 id kategori 参考kategori fasum id k
  • 无法使用 OpenCV 保存图像

    我试图保存视频文件中的图像 但它无法在我的硬盘驱动器中保存任何图像 我编译了以下程序 没有错误 include
  • UIScrollView 滚动事件阻止 UIView 动画

    我有一组 UIImageView 的动画 它们代表当前值并不断向上滴答作响 理想情况下永远不会停止 视图中也是一个滚动视图或滚动视图 每当我滚动或缩放滚动视图时 动画都会停止 并且当scrollView完全停止移动时再次启动 我相信这是由于