【发布时间】:2012-06-05 08:26:06
【问题描述】:
我的动画有问题。 问题是,如果我尝试为已创建的视图设置动画,一切顺利,如果我尝试同时创建视图并为其设置动画,则动画将不起作用。
谁能帮帮我?
我的方法
+ (LoginView *)sharedInstance {
@synchronized(self) {
if (nil == _sharedInstance) {
_sharedInstance = (LoginView *)[[[NSBundle mainBundle] loadNibNamed:@"LoginView" owner:nil options:nil] objectAtIndex:0];
}
}
return _sharedInstance;
}
- (void)hide:(BOOL)value animated:(BOOL)animated {
CATransition * animation = [CATransition animation];
animation.type = kCATransitionFade;
[animation setDuration:1.0];
if(_autoManageModalView)
[animation setDelegate:self];
[[self layer] removeAllAnimations];
[[self layer] addAnimation:animation forKey:kCATransition];
self.hidden = value;
}
我怎么称呼他们
[[LoginView sharedInstance] hide:NO animated:YES];
第一次(使用相同的调用)动画不起作用,从第二次开始一切顺利。提前致谢!
【问题讨论】:
-
您在哪里显示视图?喜欢
addSubview:[LoginView sharedInstance]或其他什么? -
a) 在您将其添加为视图或子视图的位置不可见,并且“同时创建和动画视图”不清楚 b) 您的单例实例可能设置为 nil 并重新分配
-
@A-Live - A) 默认隐藏(我将其设置为“awakeFromNib”方法)。 “同时创建和动画视图”意味着第一次调用 hide 方法时,我的应用程序会创建一个 LoginView 的新实例,并以创建结束,它应该开始动画;第二次 LoginView 已经创建,所以不需要创建它,它必须只显示。 B) 为什么我不能使用单例?
-
@sergio - 我在创建视图时显示视图(在 awakeFormNib 方法中)。
-
@Marco Pace 当然可以,但考虑到多线程的使用情况,最好让它安全。