【问题标题】:Toggle slow animation while debugging with iOS Device使用 iOS 设备进行调试时切换慢速动画
【发布时间】:2012-05-01 01:03:40
【问题描述】:

我使用的是 xCode 4.3.1,我需要使用 iOS 模拟器具有的选项 => 调试 -> 切换慢速动画,但在使用 iOS 设备进行调试时。

有可能吗?

【问题讨论】:

    标签: ios xcode ios5


    【解决方案1】:

    不可能以与模拟器完全相同的方式,但有一种使用 lldb 实现相同效果的好方法。

    使用调试器暂停代码执行,然后输入命令:

    p [(CALayer *)[[[[UIApplication sharedApplication] windows] objectAtIndex:0] layer] setSpeed:.1f]
    

    进入调试器。

    感谢this link 的解决方案。

    【讨论】:

    • 值得注意的是,如果在运行时在应用程序委托的-application:didFinishLaunching…: 方法中使用,这可以简化为[self.window.layer setSpeed:.1f];。 (当然,假设您仍在使用应用程序委托模板默认为您提供的 window 属性。)
    • 很好的答案,这比模拟器更好,我同时运行了很多动画,0.1F 对我来说仍然太快,所以我将它设置为 0.02F。现在我可以看到错误在哪里。 :D:D:D THANX A LOOOOOOT
    • 这可以在 lldb 中简化为 expr -- [(UIApplication *)UIApp keyWindow].layer.speed = 0.1f
    • 甚至在运行时[[UIApplication sharedApplication].windows[0] layer].speed = .1f;
    【解决方案2】:

    在 Swift 3 中:

    UIApplication.shared.windows.first?.layer.speed = 0.1
    

    或者,如果您在 AppDelegate 中的任何位置并且只使用一个窗口,您可以这样做:

    window?.layer.speed = 0.1
    

    【讨论】:

      【解决方案3】:

      对于 Swift 应用:

      使用断点暂停代码并输入以下 lldb 命令:

      (lldb)p UIApplication.sharedApplication().windows.first?.layer.speed = 0.1


      或者,您显然也可以在代码中的某处更改速度。例如,在应用程序启动时使用 #if 预处理器宏

      func application(application: UIApplication,
         didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
      {
          ...
      
          #if DEBUG
              application.windows.first?.layer.speed = 0.1
          #endif
      

      不要忘记在“Swift 编译器 - 自定义标志”部分的“其他 Swift 标志”行中设置 DEBUG 符号。您添加 DEBUG 符号和 -DDEBUG 条目。

      【讨论】:

        【解决方案4】:

        Swift 5,在 AppDelegate 或 SceneDelegate 类中添加这一行,这取决于您的基础架构:

        // create and assign window object if not exist. ?
        self.window = UIWindow(frame: UIScreen.main.bounds)
        
        // starts slow motion ?
        window?.layer.speed = 0.05
        

        【讨论】:

        • 值得注意的是,这是一个很棒的现代答案!
        【解决方案5】:

        在 Objective-c 中效果很好

        self.window.layer.speed = .1f;
        

        【讨论】:

          【解决方案6】:

          如果您只想在一个视图控制器中减慢应用程序的速度,您可以配置一个断点以在执行命令后继续执行。 您在viewDidAppear 中设置此断点。 然后您可以设置另一个“不可停止”断点,将速度反转为 1X。 您在viewDidDisappear 中设置了另一个断点。

          非常简单。 可以保留在您的断点列表中停用并在需要时轻松重用。

          【讨论】:

            猜你喜欢
            • 2014-12-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-01-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-01
            相关资源
            最近更新 更多