iOS 预产期计算器 —— HERO博客
来源:互联网 发布:番茄软件下载 编辑:程序博客网 时间:2024/04/28 20:38
做了一个预产期计算器,首先看一下效果图:
对于预产期的计算方法网上可以查到很多,我简单说下比较容易理解的,最后一次月经时间加上280天(平均月经周期28天 * 10个月),根据月经周期有一点浮动,最后的公式应该为:末次月经时间 + 280天 + (月经周期 - 28天)。
前两篇文章写了自定义UIDatePicker日期选择器视图和自定义UIPickerView天数选择器视图,相关代码可以点击连接查看,下面贴上控制器代码:
#import "ViewController.h"#import "HWDatePicker.h"#import "HWDaysPicker.h"#define mainW [UIScreen mainScreen].bounds.size.width#define mainH [UIScreen mainScreen].bounds.size.height@interface ViewController ()<UITextFieldDelegate, HWDatePickerDelegate, HWDaysPickerDelegate>@property (nonatomic, strong) UITextField *predicted;@property (nonatomic, strong) UITextField *menstrualTime;@property (nonatomic, strong) UITextField *menstrualDays;@property (nonatomic, strong) HWDatePicker *datePicker;@property (nonatomic, strong) HWDaysPicker *daysPicker;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; //创建控件 [self creatControl];}- (void)creatControl{ NSArray *textArray = @[@" 您的预产期是:", @" 末次月经时间", @" 月经周期天数"]; NSArray *placeholderArray = @[@"", @"请设置末次时间", @"请设置周期天数"]; //textField for (int i = 0; i < 3; i++) { UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(mainW * 0.05, mainW * 0.25 + mainW * 0.15 * i, mainW * 0.8, mainW * 0.12)]; textField.background = [UIImage imageNamed:@"textFieldBj"]; textField.delegate = self; textField.placeholder = placeholderArray[i]; //左视图 UILabel *left = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, mainW * 0.4, mainW * 0.12)]; left.textAlignment = NSTextAlignmentLeft; left.text = textArray[i]; left.textColor = [UIColor grayColor]; textField.leftView = left; textField.leftViewMode = UITextFieldViewModeAlways; //右视图 UILabel *right = [[UILabel alloc] initWithFrame:CGRectMake(mainW * 0.12 - 15, 0, 15, mainW * 0.12)]; textField.rightView = right; textField.rightViewMode = UITextFieldViewModeAlways; textField.textAlignment = NSTextAlignmentRight; [self.view addSubview:textField]; if (i == 0) { self.predicted = textField; }else if (i == 1) { self.menstrualTime = textField; }else { self.menstrualDays = textField; } } //计算按钮 UIButton *computeBtn = [[UIButton alloc] initWithFrame:CGRectMake(mainW * 0.49, mainW * 0.7, mainW * 0.36, mainW * 0.11)]; [computeBtn setImage:[UIImage imageNamed:@"computeBtn"] forState:UIControlStateNormal]; [computeBtn addTarget:self action:@selector(computeBtnOnClick) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:computeBtn]; //日期选择器 _datePicker = [[HWDatePicker alloc] initWithFrame:CGRectMake(mainW * 0.05, mainH, mainW * 0.9, mainW * 0.5)]; _datePicker.delegate = self; [self.view addSubview:_datePicker];}//天数选择器- (HWDaysPicker *)daysPicker{ if (_daysPicker == nil) { _daysPicker = [[HWDaysPicker alloc] initWithFrame:CGRectMake(mainW * 0.05, mainH, mainW * 0.9, mainW * 0.5)]; _daysPicker.delegate = self; [self.view addSubview:_daysPicker]; } return _daysPicker;}//计算按钮点击事件- (void)computeBtnOnClick{ if ([_menstrualTime.text isEqualToString:@""]) { NSLog(@"未设置末次月经时间"); }else if ([_menstrualDays.text isEqualToString:@""]) { NSLog(@"未设置月经周期天数"); }else { [_daysPicker dismiss]; [_datePicker dismiss]; NSInteger days = 280 + ([_menstrualDays.text integerValue] - 28); _predicted.text = [self computeDateWithDays:days]; }}//计算一定天数后的新日期- (NSString *)computeDateWithDays:(NSInteger)days{ NSDateFormatter *dateFormatter = [NSDateFormatter new]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSDate *myDate = [dateFormatter dateFromString:_menstrualTime.text]; NSDate *newDate = [myDate dateByAddingTimeInterval:60 * 60 * 24 * days]; return [dateFormatter stringFromDate:newDate];}#pragma mark - UITextFieldDelegate- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ if (textField == _predicted) { return NO; }else if (textField == _menstrualTime) { if (_datePicker.frame.origin.y != mainH) { [_datePicker dismiss]; }else{ [_daysPicker dismiss]; [_datePicker show]; } return NO; }else if (textField == _menstrualDays) { if (self.daysPicker.frame.origin.y != mainH) { [_daysPicker dismiss]; }else { [_datePicker dismiss]; [self.daysPicker show]; } return NO; } return YES;}#pragma mark - HWDatePickerDelegate- (void)datePickerView:(HWDatePicker *)datePickerView didClickSureBtnWithSelectDate:(NSString *)date{ _menstrualTime.text = date;}#pragma mark - HWDaysPickerDelegate- (void)daysPickerView:(HWDaysPicker *)daysPicker didSelectRowWithDays:(NSString *)days{ _menstrualDays.text = days;}@end
2 0
- iOS 预产期计算器 —— HERO博客
- iOS UIScrollView简介 —— HERO博客
- iOS UICollectionView简介 —— HERO博客
- iOS UITextField简介 —— HERO博客
- iOS UIDynamic简介 —— HERO博客
- iOS 添加字体库 —— HERO博客
- iOS MD5加密 —— HERO博客
- iOS UITableView简介 —— HERO博客
- iOS UISearchBar简介 —— HERO博客
- iOS UISearchBar使用 —— HERO博客
- iOS 自定义日历 —— HERO博客
- iOS 自定义键盘 —— HERO博客
- iOS 图片压缩 —— HERO博客
- JAVA 实现预产期计算器
- JAVA 实现预产期计算器
- iOS UICollectionView实用练习 —— HERO博客
- iOS 自定义UIButton点击动画特效 —— HERO博客
- iOS 添加PCH全局引用文件 —— HERO博客
- 邮件服务器
- 经典SQL练习题1----student/teacher/course/sc
- Spring之集合DI
- 二叉搜索树的后序遍历序列
- LR中MQ协议交易脚本介绍
- iOS 预产期计算器 —— HERO博客
- memcache案例
- JavaScript语法(一)
- Playing Atari with Deep Reinforcement Learning算法解读
- Java 内部类实现说明
- JDBC笔记-BLOB和获取主键
- 经典SQL练习题2----emp/dept
- 部分mysql学习
- poj 2226 Muddy Fields