我正在尝试将视图(_countdown)添加/删除到下面的视图中,添加视图没有问题。但是当我试图删除它时,什么也没有发生。我所有的 NSLog() 都被调用了,所以一切都应该工作。但是当它到达 -(void)removeAnimation (尝试使用动画删除时钟视图,因此它不再在主视图中可见)时,什么也没有发生。为什么?我真的不明白为什么。我已经尝试了几个小时来解决这个问题,但我找不到任何让它工作的方法......
@implementation MainViewController {
ClockView *_clock;
ClockView *_countdown;
}
viewDidLoad:
-(void)viewDidLoad{
timerAddClock = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(checkNotificationExist) userInfo:nil repeats:NO];
}
checkNotification存在:
-(void)checkNotificationExist {
NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
if ([userDef boolForKey:@"NotificationExist"]) {
NSDate *notificationDate = [[NSUserDefaults standardUserDefaults] valueForKey:@"NotificationDate"];
NSDate *now = [NSDate date];
NSTimeInterval interval = [notificationDate timeIntervalSinceDate:now];
if (interval > 0) {
if (_clock == nil) {
_countdown = [[ClockView alloc] initWithCountdownToTime:[NSDate dateWithTimeIntervalSinceNow:interval]];
[self.view addSubview:_countdown];
[UIView animateWithDuration:0.5f
animations:^{
[_countdown setFrame:CGRectMake((self.view.frame.size.width - _countdown.frame.size.width) / 2, (self.view.frame.size.height), _countdown.frame.size.width, _countdown.frame.size.height)];
}];
}
self.timeIntervalTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(checkTime) userInfo:nil repeats:YES];
}
}
检查时间
-(void)checkTime {
NSLog(@"running");
[timerAddClock invalidate];
self.timerAddClock = nil;
NSDate *notificationDate = [[NSUserDefaults standardUserDefaults] valueForKey:@"NotificationDate"];
NSDate *now = [NSDate date];
NSTimeInterval interval = [notificationDate timeIntervalSinceDate:now];
if (interval < 1) {
NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
[userDef setBool:NO forKey:@"NotificationExist"];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NotificationDate"];
self.addAnimation = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(removeAnimation) userInfo:nil repeats:YES];
}
移除动画
-(void)removeAnimation {
NSLog(@"Removing animation...");
[UIView animateWithDuration:0.5f
animations:^{
[_countdown setFrame:CGRectMake((self.view.frame.size.width - _countdown.frame.size.width) / 2, (self.view.frame.size.height - 800), _countdown.frame.size.width, _countdown.frame.size.height)];
} completion:^(BOOL finished) {
[_countdown removeFromSuperView];
}];