在我的应用程序中,我一直在尝试在iPhone 5上滚动表格 View 时在核心动画工具中使fps高于60。 (通过注释掉事物或删除 Nib 中的 View )。
几个小时后,我终于感到好奇,并启动了一个全新的垃圾应用程序,只不过是一个UITableViewController,它只是一遍又一遍地吐出相同的单元格。滚动时我将其分析为1000行,而STILL仅达到了50的高位。
我在这里想念什么?没有办法是正确的。没有比这个简单的表格更简单的显示了:

我上传了准系统应用here
有人可以确认我没有疯吗?
更新
60fps是您可以在iPhone上获得的最大速度吗?核心动画会比以前更快吗?

最佳答案

有两个想法:

  • 我对此非常敏感,但我认为50岁以上的年龄非常好。
  • 当我使用代码(比Instruments更准确)对它进行基准测试时,iPhone 5上的纯文本表格 View 被锁定为60.0 fps,因此我对您的“高50s”数字表示怀疑。如果出现以下情况,您的性能可能会下降:
  • 如果您通过Instruments进行了测量;
  • 使用调试版本进行测试了吗?或
  • 从Xcode启动了该应用程序,而不是从设备本身启动了该应用程序。
  • 为了对不同的帧速率有一些UX的定性感觉,我通过在表 View 的后台进行图像加载来逐渐降低性能,然后在前台进行此计算量较大的过程则进一步降低了性能。我将为您省去一些细节,但是我认为最重要的是,50年代中期及以后的帧速率都非常平滑,我开始注意到(但并不可怕)帧速率下降到30 -40 fps,并且当帧速率降低到5-15 fps时,UX变得完全 Not Acceptable 。您应该自己进行实验,但要有良好的设计,应该能够保持在50年代的最高水平,但是低至50年代中期可能就可以了。
  • Instruments可能无法为您提供最准确的测量结果。我可以用代码来衡量。我将fpsLabel放在屏幕上的备用位置,该位置每秒用CADisplayLink更新一次(或者,如果您有自定义绘制例程,则可以在其中进行自己的fps计算):
    @interface ViewController () <UITableViewDataSource>
    
    @property (nonatomic) CFTimeInterval previousTimestamp;
    @property (nonatomic) NSInteger frameCount;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        self.previousTimestamp = CFAbsoluteTimeGetCurrent();
    
        CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)];
        [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
    }
    
    - (void)handleDisplayLink:(CADisplayLink *)displayLink;
    {
        CFTimeInterval now = CFAbsoluteTimeGetCurrent();
        CFTimeInterval elapsed = now - self.previousTimestamp;
        self.frameCount++;
    
        if (elapsed > 1.0)
        {
            CGFloat fps = self.frameCount / elapsed;
            dispatch_async(dispatch_get_main_queue(), ^{
                self.fpsLabel.text = [NSString stringWithFormat:@"%.1f fps", fps];
            });
            self.previousTimestamp = now;
            self.frameCount = 0;
        }
    }
    

  • 最重要的是,在发行版本条件(即未链接到计算机,正在运行非调试版本)中结合了更准确的度量(通过代码),我认为您会发现iPhone 5上的表格 View 性能非常出色,锁定为60 fps。但是,即使您的UI下降到50s帧/秒左​​右,我个人仍然认为还可以。

    关于iphone - 为什么即使在完全裸露的UITableView滚动屏幕上,我的iPhone 5也不显示60+ fps?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14867555/

    10-10 21:34
    查看更多