我为要在我的应用程序中使用的菜单创建了一个 UIView 子类。菜单可以打开和关闭,并且有一个动画:
- (void)hideMenu {
[UIView animateWithDuration:duration
animations:^ {
// Do some hiding animation
// using CGAffineTransformMake. Ex:
[button1 setTransform:CGAffineTransformMake(1, 0, 0, 1, -120, 0)];
}
completion:^(BOOL finished) {
isOpen = NO;
}];
}
通过一个类方法,它实例化了一个单例,因此我可以在许多视图中使用相同的实例,并且我希望可以选择打开或关闭实例化它。
在 nib 文件中,最初显示了对象,所以我尝试在初始化单例后运行上面的 hide 方法:
(...)
if (shouldStartClosed)
[_singleton hideMenu];
return _singleton;
我注意到该方法当然被调用,每一行都运行,BOOL 标志发生变化。但是,对象的动画效果不正确。当我按下菜单中的一个按钮时,就会调用同样的方法,这一次它起作用了,菜单被隐藏了。
这可能是什么原因?
更新:到目前为止,我发现的最佳解决方案是重复 hideMenu 方法并将每个按钮实例变量替换为[_singleton viewWithTag:#]
. 可能不是最优雅的,但它是迄今为止最好的。