我有一个名为 DoRotate() 的虚拟函数,它执行子视图旋转的动画。很简单......它是从一个计时器事件中触发的,并且总是在主线程上调用。
这就像一个魅力......
现在,我对整个视图进行子类化,并创建另一个尝试做同样事情的视图。它显示为主视图的子视图(全屏)......现在, UIView.Animate() 是一个无操作......它根本不会执行块内的代码。它实际上是在另一个视图中调用的完全相同的函数......它试图为子视图设置动画(原始视图的子子视图......
但这就像操作系统只是在说“太糟糕了,太可悲了,我们不再工作了......” - 这是操作系统的典型特征,但这是另一个话题......
最初,我试图让这个视图成为另一个可以从基本视图翻转到的视图,但显然,如果没有导航控制器,它将无法工作,如果你有一个,那么我创建的弹出菜单将不再弹出...
UIView.Animate (tm, 0, UIViewAnimationOptions.CurveLinear, () =>
{
MapRotating = true;
_DoRotate ();
},
() => {
MapRotating = false;});
}
MapRotating = true; 永远不会被调用..我已经把它放在动画调用之前,但是如果动画失败它就不会再尝试了......这样,它会永远失败......
_DoRotate 计算要旋转的角度并旋转它(设置变换)...
是否有一个 UIView.LastError() 方法,我可以调用它来告诉我为什么它忽略我的请求......(哦,如果我们传递了它不喜欢的东西,抛出异常怎么样?)
-克里斯