在iOS8中,TouchesMoved的滞后程度更高?

时间:2014-09-23 20:26:46

标签: performance ios7 uiview xamarin.ios ios8

我正在与iOS 8性能问题作斗争。更新到iOS 8确实使我的应用程序在iPad 2上几乎无法使用。有一些基本的性能问题,我试图解决,看看我是否可以避免它们或至少减轻它们对我的应用程序的影响。一个问题是拖动UIImageViews。关于如何使用UIImageViews调用TouchesMoved函数有一些非常不同的东西。

Please see my video below for a full description,但这是我目前的调查结果。我在UIImageViews中使用TouchesMoved函数在用户将手指拖过屏幕时在屏幕上拖动对象。

    public override void TouchesMoved (NSSet touches, UIEvent evt)
    {
        base.TouchesMoved (touches, evt);

        UITouch touch = touches.AnyObject as UITouch;
        PointF TouchLocation_old = TouchLocation;
        TouchLocation = touch.LocationInView (this.Superview);
//      Console.WriteLine("TouchLocation = " + TouchLocation);

        float offsetX = TouchLocation.X - TouchLocation_old.X;
        float offsetY = TouchLocation.Y - TouchLocation_old.Y;
        Center = new PointF(Center.X + offsetX, Center.Y + offsetY);
    }

在我的项目中,只要我修改拖动对象的位置,就会对TouchesMoved事件产生某种延迟或限制。通常情况下,TouchesMoved事件每隔几毫秒就会发生一次,但在iOS 8中,在某些情况下,它每隔120毫秒就会消失,导致在屏幕上拖动对象时出现滞后峰值。为什么是这样?那么iOS 8和TouchesMoved功能已经改变了

另外注意,我注意到添加到视图控制器的大量UIViews会导致这种情况。出于某些原因,在iOS 7中,向视图控制器添加大量UIViews并没有影响它,但在iOS 8中它导致TouchesMoved函数的调用次数减少(可能因为它的迭代次数)通过所有的观点确定它是否触及它们?但是iOS 7会做得那么对吗?iOS 8中的某些东西会让这个过程更耗时吗?)我还注意到UIScrollViews变成了&# 34;较重"和#34;慢"在iOS 8中也更快,在iOS 7中,它们使用相同数量的子视图顺利运行。

----添加了硬件信息----

iOS 7.1上的iPad 2 MC969LL / A

iOS 8.0上的iPad Mini MD528LL / A

----添加了调查结果----

在iOS 8中,View Controller视图中的大量UIViews也落后于CAKeyframeAnimation的性能。虽然这个测试用例并不像我的应用程序那样极端,但我已经在下面的一个单独的测试用例中证明了这个TouchesMoved问题。

Video demoing the project

Xamarin Studio Project via Dropbox

0 个答案:

没有答案