相对新手,抱歉有点新手问题。我已经尝试寻找答案。
我编写了一种方法,根据用户拿着 iPhone 的角度,将视觉动画效果应用于视图控制器上的 UIImageView。基本上我使用 CMMotionManager 来提供一个角度,然后使用该角度通过更改其 bounds.center 来移动 UIImageView。当一切都卡在视图控制器中时效果很好,但我希望它更清洁和可重用。
所以我对 UIImageView 进行了子类化,向它添加了一个运动管理器、一个运动管理器块处理程序和操作队列,以及一些将设备角度映射到与 UIImageView 中的偏移相对应的数字的方法。我创建了一个自定义的 init 方法,它接受各种参数来控制视觉效果。然后就像将此类的实例作为子视图 (addSubview:) 添加到我的控制器的视图中一样简单。它甚至使用后台线程和自动释放池。滑溜溜的,我想。
虽然它看起来在视觉上可以工作,但出于多种原因(包括 Instruments 显示出不断增加的内存消耗),我认为这不是我应该插入 UIImageView 子类的内容。有没有更好的方法来构建这个?例如,与 UIViewController 不同,UIImageView 的子类没有 viewDidLoad/viewDidUnload/...appear/etc。这将让我开始和停止运动管理器更新;我应该能够为整个应用程序创建一个单一的运动管理器,而不是在我的图像效果类中实例化它。
我确实意识到每个应用程序必须只有一个 CMMotionManager 实例,并且已经实现了Jonathan 的方法,但是后来我发现自己需要从我漂亮的类中访问 appDelegate ,而从视图控制器中更容易做到这一点,而且它只是从那里螺旋向下。
我是要求太多,还是只是不理解一个非常简单的概念?