如何根据日期范围配置标签和图像?
假设我有一个图像文件名(Aquarius),我希望当用户在日期选择器中选择一个介于 1月21日到 2月12日之间的日期时,图像视图显示水瓶座图像,标签显示图像名称?
到目前为止,这是我所拥有的,但不知道如何去做它
@IBAction func birthDay(sender: AnyObject) {
let date = datePicker.date
}
答案 0 :(得分:1)
假设您有date1
和date2
- 您的限制日期。而UIImageView
名为imageView
。
@IBAction func birthDay( sender: AnyObject) {
let date = datePicker.date
if date1.compare(date) == date2.compare(date) { // date between date1 and date2
imageView.image = UIImage(named: "Aqurius")
} else {
imageView.image = nil // otherwise clear imageView
}
}
要简化此类任务,您可以为包含所有必需方法的NSDate创建扩展。
extension NSDate {
convenience init(dateString:String) {
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-dd"
dateStringFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
let d = dateStringFormatter.dateFromString(dateString)!
self.init(timeInterval:0, sinceDate:d)
}
func isDateBetween(date1: NSDate, date2: NSDate) -> Bool {
return date1.compare(self) == date2.compare(self)
}
}
现在你可以简化datePicker
的方法:
@IBAction func birthDay( sender: AnyObject) {
let date = datePicker.date
if date.isDateBetween(NSDate("2015-06-05"), date2: NSDate("2015-07-05")) { // date between date1 and date2
imageView.image = UIImage(named: "Aqurius")
} else {
imageView.image = nil // otherwise clear imageView
}
}
<强>更新强>
好的,如果您想从几张图片中进行选择,可以试试这个:
let dates: [(NSDate, NSDate, String)] = [(NSDate("2015-06-05"), NSDate("2015-07-05"), "imgname1"), (NSDate("2015-08-05"), NSDate("2015-08-05"), "imgname2")] // and so on
let date = datePicker.date
for tuple in dates {
if date.isDateBetween(tuple.0, date2: tuple.1) {
let imageName = tuple.2
// do whatever you need
brea
}
}
答案 1 :(得分:0)
+(NSString *)getStarString:(NSDate *)birth
{
if (![birth isKindOfClass:[NSDate class]]) {
return nil;
}
NSDateFormatter *df=[[NSDateFormatter alloc]init];
df.dateFormat=@"yyyy-MM-dd";
NSArray *arr=[[df stringFromDate:birth] componentsSeparatedByString:@"-"];
int m=[arr[1] intValue];
int d=[arr[2] intValue];
NSArray *astroArray=@[@"Capricorn",@"Aquarius",@"Pisces",@"Aries",@"Taurus",@"Gemini",@"Cancer",@"Leo",@"Virgo",@"Libra",@"Scorpio",@"Sagittarius",@"Capricorn"];
NSString *astroFormat = @"102123444543";
if (m<1||m>12||d<1||d>31){
return nil;
}
if(m==2 && d>29)
{
return nil;
}else if(m==4 || m==6 || m==9 || m==11) {
if (d>30) {
return nil;
}
}
NSInteger index=m-(d < [[astroFormat substringWithRange:NSMakeRange((m-1), 1)] intValue] - (-19));
return astroArray[index];
}