2016-09-14 70 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後不會自動更改圖像。我必須運行應用程序來更改圖像。 –

相關問題