2016-09-14 67 views
0

我有两个图像,一个用于上午,我需要在上午6点之后显示,另一个用于晚上,我需要在晚上6点之后在后台显示。请帮助我在上午6点至下午6点以及下午6点至上午6点自动更换显示屏。在上午6点和下午6点更改一次背景图像

NSDate *_currentDate = [NSDate date]; 
NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc] init]; 
[_dateFormatter setDateFormat:@"yyyy-MM-dd' 06:00AM +0000'"]; // set the morning date here 
NSString *_morningDateString = [_dateFormatter stringFromDate:_currentDate]; 
[_dateFormatter setDateFormat:@"yyyy-MM-dd' 06:00PM +0000'"]; // set the evening date here 
NSString *_eveningDateString = [_dateFormatter stringFromDate:_currentDate]; 

[_dateFormatter setDateFormat:@"yyyy-MM-dd hh:mma zzz"]; 
NSDate *_morningDate = [_dateFormatter dateFromString:_morningDateString]; 
NSDate *_eveningDate = [_dateFormatter dateFromString:_eveningDateString]; 

NSTimeInterval _intervalToMorningDate = [_morningDate timeIntervalSinceDate:_currentDate]; 
NSTimeInterval _intervalToEveningDate = [_eveningDate timeIntervalSinceDate:_currentDate]; 

if (_intervalToMorningDate > 0) { 
    // now it is night 
    self.bgImage.image = [UIImage imageNamed:@"main_bg.png"]; 
    [self performSelector:@selector(replaceTheBackgoundForMorning) withObject:nil afterDelay:_intervalToMorningDate]; 
} else { 
    // now it is daytime 
    self.bgImage.image = [UIImage imageNamed:@"daylight.png"]; 
    [self performSelector:@selector(replaceTheBackgoundForEvening) withObject:nil afterDelay:_intervalToEveningDate]; 
} 
-(void)replaceTheBackgoundForMorning { 
// reaplce the backgound here 
self.bgImage.image = [UIImage imageNamed:@"daylight.png"]; 
} 

- (void)replaceTheBackgoundForEvening { 
// reaplce the backgoung here 
self.bgImage.image = [UIImage imageNamed:@"main_bg.png"]; 
} 
+0

这似乎太复杂。只需创建一个NSTimer,每分钟滴答滴答,并在计时器处理程序中查看当前小时并设置适当的图像 – Paulw11

回答

1

尝试使用NSDateComponents像下面

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:[NSDate date]]; 
NSInteger nowHour = [components hour]; 
NSInteger nowMinute = [components minute]; 
NSInteger nowSecond = [components second]; 

if (nowHour < 6 || (nowHour > 18 || (nowHour == 18 && (nowMinute > 0 || nowSecond > 0)))) { 
    // Time is 6pm to 6am 
} 
else{ 
    // Time is 6am to 6pm 
+0

让我知道,它是否有效? –

+0

谢谢!它正在工作,但达到6pm后不会自动更改图像。我必须运行应用程序来更改图像。 –

相关问题