我的问题是:如何在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