如何根据日期范围配置标签和图像?

时间:2015-12-10 08:04:53

标签: ios swift uidatepicker

如何根据日期范围配置标签和图像?

假设我有一个图像文件名(Aquarius),我希望当用户在日期选择器中选择一个介于 1月21日 2月12日之间的日期时,图像视图显示水瓶座图像,标签显示图像名称?

到目前为止,这是我所拥有的,但不知道如何去做它

@IBAction func birthDay(sender: AnyObject) {
  let date = datePicker.date
}

2 个答案:

答案 0 :(得分:1)

假设您有date1date2 - 您的限制日期。而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];
}