我的問題是:如何在iOS中的具體日期和時間加載一個特定的形象?加載特定的日期和時間的圖像中的iOS
我已經搜查了網,但沒有發現任何有用的東西。
我有圖像在imageArray列表,並希望在一個特定的日期,時間和順序來顯示每個圖像。
Fx的。說我想在MyDateAndTime上加載MyImage。我怎樣才能做到這一點?
圖像1 - DateAndTime 1個 圖像2 - DateAndTime 2 圖片3 - DateAndTime 3
任何建議所理解的,請如果可能提供一些源代碼。
我的問題是:如何在iOS中的具體日期和時間加載一個特定的形象?加載特定的日期和時間的圖像中的iOS
我已經搜查了網,但沒有發現任何有用的東西。
我有圖像在imageArray列表,並希望在一個特定的日期,時間和順序來顯示每個圖像。
Fx的。說我想在MyDateAndTime上加載MyImage。我怎樣才能做到這一點?
圖像1 - DateAndTime 1個 圖像2 - DateAndTime 2 圖片3 - DateAndTime 3
任何建議所理解的,請如果可能提供一些源代碼。
我把簡單的邏輯,編輯按照您的要求,否則,如果您有關於我的回答有任何疑問,那麼請告訴我。
最好的辦法是存儲圖像與日期時間(dd_MM_yyyy_HH_mm_ss
)的名稱和訪問圖像的名稱,例如像,
NSString *imageName
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd_MM_yyyy_HH_mm_ss"];
imageName = [NSString stringWithFormat:@"%@.png", [formatter stringFromDate:[NSDate date]]]; // here you can set specific dateTime, i putted current dateTime
在這裏,你得到imageName
諸如此類19_10_2013_6_13_21.png
而且通過這個圖像名稱可以從包或文檔目錄中獲取圖像。
非常感謝你,我確信這將工作! – me72921
但是你知道,這需要3600個圖像來處理一個小時範圍內的日期? – CouchDeveloper
將日期組件作爲數組的索引檢索會更好。 –
如果我現在明白你的問題,使用遞歸塊你可以檢查出一個奇特的辦法是這樣的:
#import <Foundation/Foundation.h>
#import <dispatch/dispatch.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSArray* dates = @[@1, @1, @1, @1, @1, @1, @1, @1, @1];
NSArray* urls = @[@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I"];
NSEnumerator* dateIter = [dates objectEnumerator];
NSEnumerator* urlIter = [urls objectEnumerator];
typedef void(^block_t)(NSEnumerator* dateIter, NSEnumerator* urlIter);
block_t asyncFunc;
__block __weak block_t _asyncFunc = asyncFunc = ^(NSEnumerator* dateIter, NSEnumerator* urlIter) {
NSNumber* date = [dateIter nextObject];
NSString* url = [urlIter nextObject];
if (date != nil && url != nil) {
double delayInSeconds = [date doubleValue];
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_global_queue(0, 0), ^(void){
NSLog(@"%@", url);
_asyncFunc(dateIter, urlIter);
});
}
else {
printf("\n");
return;
}
};
// start:
asyncFunc(dateIter, urlIter);
sleep (10);
}
return 0;
}
注:
的「日期」實際上是「延遲「並且這個例子中的URL實際上只是字符串。你應該可以隨意調整它。當然,NSLog(@"%@", url);
實際上會顯示你的圖像。
此外,塊asyncFunc是異步的!
如果您只想每分鐘顯示一張不同的圖像,請使用此選項,否則請在下面跳過以查看有用的日期信息。
NSTimeInterval secondsInMinute = 60;
[NSTimer timerWithTimeInterval:secondsInMinute target:self selector:@selector(minuteChanged:) userInfo:nil repeats:YES];
- (void)minuteChanged:(id)sender {
// change image here
}
你的問題可能有很多不同的答案,你想動態創建這個日期嗎?或者它是一個預定義的日期?一個解決方案是獲得你正在尋找的日期的timeInterval。
NSDate* rightNow = [NSDate date];
NSTimeInterval timeInterval = [rightNow timeIntervalSince1970];
// since time intervals are in seconds we can just append the
// date as easily as adding time
NSInteger secondsInMinute = 60;
NSInteger minutesInHour = 60;
NSInteger hoursInDay = 24;
NSInteger daysInWeek = 7;
NSInteger secondsInWeek = secondsInMinute * minutesInHour * hoursInDay * daysInWeek;
timeInterval = timeInterval + secondsInWeek;
NSDate* aWeekInFuture = [NSDate dateWithTimeIntervalSince1970:timeInterval];
,我想說的是最簡單的下架設置一個日期,但你也可以使用組件來動態地設置一個將來的日期。這會導致一些問題,但這是如何完成的。
NSDate* rightNow = [NSDate date];
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* dateCompenents = [calendar components:(NSDayCalendarUnit | NSWeekCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:rightNow];
[dateCompenents setDay:dateCompenents.day + 7];
NSDate* aWeekInFuture = [calendar dateFromComponents:dateCompenents];
幫助解釋這一點,這裏是一些控制檯日誌
(lldb) po rightNow
$0 = 0x0b933440 2013-10-19 12:43:55 +0000
(lldb) po aWeekInFuture
$1 = 0x0ba32a60 2013-10-26 04:00:00 +0000
你看到的日期是如何準確的一天,年,月,但看在準確的時間,當前時間(現在)是12:43:55但他未來的一週是4:00:00,這是因爲我沒有要求NSMinutesCalendarUnit,NSHoursCalendarUnit,NSSecondsCalendarUnit ...所以如果我想要一個完美的日期,除非不足我要求每一件事,但你可能並不需要如此準確,實際上你甚至可能想要設定自己的時間。
現在,如果你想有一個靜態日期,用戶輸入一個日期,則需要使用下面
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setCalendar:currentCalendar];
[dateFormatter setDateFormat:@"mm/dd/yyyy"];
NSDate* birthdayDate = [dateFormatter dateFromString:@"10/05/2013"];
NSDateFormatter
例如現在你想知道你怎麼知道,如果今天是在指定的日期保存。因爲它測試完美,但它可以說你存儲的日期在NSUserDefaults
或服務器或某些地方的,比較的日期的最簡單的方法是用一個NSDate
NSDate* rightNow = [NSDate date];
NSDate* storedDate = [[NSUserDefaults standardUserDefaults] [email protected]"storedDate"] // some date from server, or UserDefaults
NSComparisonResult = [rightNow compare:storedDate];
這個比較功能是有點不足將返回NSOrderedSame
(如果它們相等)的值,NSOrderedDescending
(如果storedDate在rightNow後面),並且NSOrderedAscending
(如果storedDate在rightNow前面)。這是所有特定的時間間隔。如果你只是想一個普通的日子,你將不得不通過
NSDate* rightNow = [NSDate date];
NSDate* birthdayDate = [[NSUserDefaults standardUserDefaults] [email protected]"birthday"]
NSDateComponents* todayComponents = [currentCalendar components:(NSDayCalendarUnit | NSMonthCalendarUnit) fromDate:rightNow];
NSDateComponents* birthdayComponents = [currentCalendar components:(NSDayCalendarUnit | NSMonthCalendarUnit) fromDate:birthdayDate];
BOOL dayIsTheSame = (todayComponents.day == birthdayComponents.day);
BOOL monthIsTheSame = (todayComponents.month == birthdayComponents.month);
BOOL todayIsBirthday = (dayIsTheSame && monthIsTheSame);
if (todayIsBirthday) {
[self.imgViewBirthday setImage[UIImage imageNamed:@"cake.png"]];
}
在你的問題,你指定的圖像陣列組件進行測試,可以說你有根據不同的圖像上時它,或分,在請求NSMinutesCalendarUnit
作爲此數組的索引之後,您將使用組件todayComponent.minute;
UIImage* currentImageToDisplay = [self.arrayOfImage objectAtIndex:todayComponent.minute];
self.imageView.image = currentImageToDisplay;
參考文獻: NSDate, NSDateFormatter, NSDateComponents, NSCalendar, NSTimer
也非常有用的答案 - 日期是預定義的 – me72921
日期總是一個在我使用的任何語言的屁股疼痛:/,所以這對我來說是一件好事,我主要使用堆棧溢出學習的目的,我尋找的問題,我想我可以找到答案,看看提出答案,然後揭示我的發現,所以這對於學習的目的來說是個好問題:p –
透露更多的細節。你想要做什麼? – cojoj
我只想製作一個演示應用程序,演示如何在不同的日期和時間加載不同的圖像。 – me72921
所以你有一個圖像或...的數據庫?我想你可以創建一些哈希函數日期和隨機選擇圖像 – cojoj