时间空间
来源:互联网 发布:koala for mac 编辑:程序博客网 时间:2024/05/21 12:55
#import <UIKit/UIKit.h>
@protocol TimePickViewDelegate <NSObject>
/**
* 选择日期确定后的代理事件
*
* @param date 日期
*/
- (void)getSelectDate:(NSString *)date;
/**
* 日期
*
* @param day 天
* @param horse 时
* @param minute 分
*/
- (void)getSelectDate:(NSString *)day
horse:(NSString *)horse
minute:(NSString *)minute;
@end
@interface TimePickView :UIView <UIPickerViewDelegate,UIPickerViewDataSource>
@property (nonatomic,strong)UIView *mainView;
@property (nonatomic,strong)UIButton * cancelBtn;
@property (nonatomic,strong)UIButton * sureBtn;
@property (nonatomic,strong)UIDatePicker *date;
@property (nonatomic,strong)NSString *selectDate;
@property (nonatomic,weak) id<TimePickViewDelegate> delegate;
/**
* 要改的
*/
@property (nonatomic ,strong)UIPickerView *pickerView;
/**
* DataHorse
*/
@property (nonatomic ,strong)NSMutableArray *hoursData;
/**
* DataMinute
*/
@property (nonatomic ,strong)NSMutableArray *minuteData;
/**
* horse
*/
@property (nonatomic ,strong)NSString *horse;
/**
* minute
*/
@property (nonatomic,strong)NSString * minute;
/**
* day
*/
@property (nonatomic,strong)NSString * day;
#import "TimePickView.h"
@implementation TimePickView
- (instancetype)initWithFrame:(CGRect)frame{
if(self = [superinitWithFrame:frame]){
self.backgroundColor = [UIColorcolorWithRed:0green:0blue:0alpha:0.3];
self.mainView = [[UIViewalloc] init];
// self.mainView.layer.cornerRadius = 3;
// self.mainView.layer.borderWidth = 1;
// self.mainView.layer.borderColor = KDefaultBlue_Color.CGColor;
self.mainView.backgroundColor = [UIColorwhiteColor];
[self addSubview:self.mainView];
WS(weakself);
[self.mainViewmas_makeConstraints:^(MASConstraintMaker *make) {
// make.centerX.centerY.equalTo(weakself);
make.bottom.equalTo(weakself);
make.centerX.equalTo(weakself);
make.left.equalTo(weakself);
make.right.equalTo(weakself);
make.height.equalTo(@250);
}];
self.date = [[UIDatePickeralloc] init];
/**
* 暂时注掉
*/
[self.mainViewaddSubview:self.date];
UIView *btnView = [[UIViewalloc] init];
[self.mainViewaddSubview:btnView];
[btnView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.equalTo(weakself.mainView);
make.height.equalTo(@50);
}];
btnView.backgroundColor = RGB(235, 235,235);
;
self.cancelBtn = [[UIButtonalloc] init];
self.sureBtn = [[UIButtonalloc] init];
// self.cancelBtn.backgroundColor = KDefaultBlue_Color;
// self.sureBtn.backgroundColor = KDefaultBlue_Color;
[self.sureBtnsetTitleColor:RGB(249,150, 52) forState:UIControlStateNormal];
[self.cancelBtnsetTitleColor:[UIColorgrayColor] forState:UIControlStateNormal];
// [self.sureBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.sureBtnsetTitle:@"确定"forState:UIControlStateNormal];
// [self.cancelBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.cancelBtnsetTitle:@"取消"forState:UIControlStateNormal];
[self.sureBtnaddTarget:selfaction:@selector(sureBtnClick:)forControlEvents:UIControlEventTouchUpInside];
[self.cancelBtnaddTarget:selfaction:@selector(removeBtnClick:)forControlEvents:UIControlEventTouchUpInside];
[self.mainViewaddSubview:self.cancelBtn];
[self.mainViewaddSubview:self.sureBtn];
[self.datemas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(weakself.mainView).offset(40);
make.left.equalTo(weakself.mainView).offset(10);
make.right.equalTo(weakself.mainView).offset(-10);
make.bottom.equalTo(weakself.mainView);
}];
[self.cancelBtnmas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.mainView).offset(15);
make.width.equalTo(@70);
make.height.equalTo(35);
make.top.equalTo(weakself.mainView).offset(9);
}];
[self.sureBtnmas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.mainView).offset(-15);
make.width.equalTo(@70);
make.height.equalTo(35);
make.top.equalTo(weakself.mainView).offset(9);
}];
self.date.datePickerMode = UIDatePickerModeTime;//模式选择
NSLocale *locale = [[NSLocalealloc] initWithLocaleIdentifier:@"zh_CN"];//设置为中文
self.date.locale = locale;
NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];//设置输出的格式
[dateFormatter setDateFormat:@"MM-dd"];
NSString *crrountTime = [selftimeFormat];
MYLog(@"%@",crrountTime);
NSArray *timeArray = [crrountTime componentsSeparatedByString:@"-"];
//pikeView(后期确定)
self.pickerView = [[UIPickerViewalloc]init];
self.pickerView.delegate =self;
self.pickerView.dataSource =self;
[self.pickerViewselectRow:0inComponent:0animated:NO];
[self.pickerViewselectRow:[timeArray[0]integerValue] inComponent:1animated:NO];
[self.pickerViewselectRow:[timeArray[1]integerValue]/5inComponent:2animated:NO];
self.horse = timeArray[0];
NSInteger min = [timeArray[1]integerValue]/5;
[self minuteData];
self.minute =self.minuteData[min];
self.day =@"今天";
[self.mainViewaddSubview:self.pickerView];
[self.pickerViewmas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(weakself.mainView).offset(40);
make.left.equalTo(weakself.mainView).offset(10);
make.right.equalTo(weakself.mainView).offset(-10);
make.bottom.equalTo(weakself.mainView);
}];
[selfsetDatePickerFont];
self.date.hidden =YES;
}
return self;
}
/**
* 设置时间格式,可更改HH、hh改变日期的显示格式,有12小时和24小时制
*
* @return 时间格式
*/
- (NSString *)timeFormat
{
NSDate *selected = [self.datedate];
NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];
[dateFormatter setDateFormat:@"HH-mm"];
NSString *currentOlderOneDateStr = [dateFormatterstringFromDate:selected];
return currentOlderOneDateStr;
}
/**
* 确定按钮点击,会触发代理事件
*/
- (void)sureBtnClick:(UIButton *)sender {
self.selectDate = [selftimeFormat];
if ([self.delegaterespondsToSelector:@selector(getSelectDate:)]) {
[self.delegategetSelectDate:self.selectDate];
}
if([self.pickerView.delegaterespondsToSelector:@selector(pickerView:didSelectRow:inComponent:)]&&[self.delegaterespondsToSelector:@selector(getSelectDate:horse:minute:)]){
[self.delegategetSelectDate:self.dayhorse:self.horseminute:self.minute];
}
// 开始动画
[UIViewanimateWithDuration:0.2animations:^{
self.alpha =0;
} completion:^(BOOL finished) {
[selfremoveFromSuperview];
}];
}
/**
* 取消按钮点击
*/
- (void)removeBtnClick:(UIButton *)sender {
// 开始动画
[UIViewanimateWithDuration:0.2animations:^{
self.alpha =0;
} completion:^(BOOL finished) {
[selfremoveFromSuperview];
}];
}
/**
* 点击其他地方移除时间选择器
*/
- (void)backGroundBtnClicked:(UIButton *)sender
{
[selfremoveFromSuperview];
}
//- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
// // 开始动画
// [UIView animateWithDuration:0.2 animations:^{
// self.alpha = 0;
// } completion:^(BOOL finished) {
// [self removeFromSuperview];
// }];
//}
- (void)setDatePickerFont{
unsigned outCount;
int i;
objc_property_t *pProperty = class_copyPropertyList([UIDatePicker class], &outCount);
for (i = outCount -1; i >=0; i--)
{
// 循环获取属性的名字 property_getName函数返回一个属性的名称
NSString *getPropertyName = [NSStringstringWithCString:property_getName(pProperty[i])encoding:NSUTF8StringEncoding];
NSString *getPropertyNameString = [NSStringstringWithCString:property_getAttributes(pProperty[i])encoding:NSUTF8StringEncoding];
MYLog(@"%@",getPropertyName);
if([getPropertyName isEqualToString:@"textFont"])
{
[_datesetValue:[UIFontsystemFontOfSize:12]forKey:@"textFont"];
}
NSLog(@"%@====%@",getPropertyNameString,getPropertyName);
}
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 3;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if (component ==1) {
return 24;
}
if (component == 2) {
return 12;
}
return 3;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if (component == 0) {
if (row == 0) {
return @"今天";
}else if(row ==1){
return @"明天";
}else{return@"后天";}
}
if (component == 1) {
return [NSStringstringWithFormat:@"%@ 点", [self.hoursData[row]stringValue]];
}
if (component == 2) {
return [NSStringstringWithFormat:@"%@ 分",[self.minuteData[row]stringValue]];
}
return nil;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
if (component == 0) {
if(row == 0){
self.day =@"今天";
}else if(row==1){
self.day =@"明天";
}else if(row==2){
self.day =@"后天";
}
}else if(component ==1){
self.horse =self.hoursData[row];
}else if (component ==2){
self.minute =self.minuteData[row];
}
}
- (NSMutableArray *)hoursData{
if (!_hoursData) {
_hoursData = [NSMutableArrayarray];
for (int i =0; i<24; i++) {
[_hoursData addObject:@(i)];
}
}
return_hoursData;
}
- (NSMutableArray *)minuteData{
if (!_minuteData) {
_minuteData = [NSMutableArrayarray];
for (int i =0; i<60; i=i+5) {
// if (i<=5) {
//
// [_minuteData addObject:];
// }else{
[_minuteData addObject:@(i)];
// }
}
}
return_minuteData;
}
@end
//控制器实现代理方法
- (void)getSelectDate:(NSString *)day horse:(NSString *)horse minute:(NSString *)minute{
MYLog(@"%@,%@,%@",day,horse,minute);
//获取这个月的天数
NSDate *today = [NSDatedate];
NSCalendar *c = [NSCalendarcurrentCalendar];
NSRange days = [crangeOfUnit:NSDayCalendarUnitinUnit:NSMonthCalendarUnitforDate:today];
NSLog(@"%lu,%lu",(unsignedlong)days.length,(unsignedlong)days.location);
//获取当前时间
NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd-HH-mm"];
NSString *currentOlderOneDateStr = [dateFormatterstringFromDate:today];
MYLog(@"%@",currentOlderOneDateStr);
NSArray *time = [currentOlderOneDateStr componentsSeparatedByString:@"-"];
//获取时间控件
NSIndexPath *path = [NSIndexPathindexPathForRow:1inSection:0];
UITableViewCell *cell = [self.tableViewcellForRowAtIndexPath:path];
if ([day isEqualToString:@"今天"]) {
//判断小时
if ([horse integerValue] <[time[3] integerValue]) {
[selfshowToastHUDView:@"请选择对的日期"afterDelay:2];
cell.detailTextLabel.text =@"";
self.postTime =@"";
return;
}else if ([horseintegerValue] == [time[3]integerValue] ) {
if ([time[4]integerValue]<30 && ([time[4]integerValue]+30)<=[minuteintegerValue]) {
MYLog(@"%@,%@",time[4],minute);
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%@-%@ %@:%@",time[0],time[1],time[2],horse,minute];
self.postTime = [NSStringstringWithFormat:@"%@-%@-%@ %@:%@",time[0],time[1],time[2],horse,minute];
}else{
MYLog(@"%@,%@",time[4],minute);
[selfshowToastHUDView:@"时间间隔太短"afterDelay:2];
cell.detailTextLabel.text =@"";
self.postTime =@"";
return;
}
}else{
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%@-%@ %@:%@",time[0],time[1],time[2],horse,minute];
self.postTime = [NSStringstringWithFormat:@"%@-%@-%@ %@:%@",time[0],time[1],time[2],horse,minute];
}
}else if([dayisEqualToString:@"明天"]){
//判断年月日是否有进位
NSInteger nextDay = [time[2]integerValue];
NSInteger nextMoth = [time[1]integerValue];
if (day.length < nextDay+1) {
NSInteger nextAddOne = nextMoth +1;
if (nextAddOne>12) {
NSInteger years = [time[0]integerValue];
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"1",horse,minute];
self.postTime =[NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"1",horse,minute];
}else{
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"1",horse,minute];
self.postTime = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"1",horse,minute];
}
}else{
NSInteger day =[time[2]integerValue];
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%@-%d %@:%@",time[0],time[1],(day+1),horse,minute];
self.postTime = [NSStringstringWithFormat:@"%@-%@-%ld %@:%@",time[0],time[1],(day+1),horse,minute];
}
}else if([dayisEqualToString:@"后天"]){
//判断年月日是否有进位
NSInteger nextDay = [time[2]integerValue];
NSInteger nextMoth = [time[1]integerValue];
if ((day.length < nextDay+2)&&day.length != nextDay) {
NSInteger nextAddOne = nextMoth +1;
if (nextAddOne>12) {
NSInteger years = [time[0]integerValue];
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"1",horse,minute];
self.postTime =[NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"1",horse,minute];
}else{
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"1",horse,minute];
self.postTime = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"1",horse,minute];
}
}else{
NSInteger day =[time[2]integerValue];
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%@-%d %@:%@",time[0],time[1],(day+2),horse,minute];
self.postTime = [NSStringstringWithFormat:@"%@-%@-%d %@:%@",time[0],time[1],(day+2),horse,minute];
}
if ((day.length < nextDay+2)&&day.length == nextDay) {
NSInteger nextAddOne = nextMoth +1;
if (nextAddOne>12) {
NSInteger years = [time[0]integerValue];
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"2",horse,minute];
self.postTime = [NSStringstringWithFormat:@"%d-%@-%@ %@:%@",(years+1),@"1",@"2",horse,minute];
}else{
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"2",horse,minute];
self.postTime = [NSStringstringWithFormat:@"%@-%ld-%@ %@:%@",time[0],(long)nextAddOne,@"2",horse,minute];
}
}else{
NSInteger day =[time[2]integerValue];
cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%@-%d %@:%@",time[0],time[1],(day+2),horse,minute];
self.postTime = [NSStringstringWithFormat:@"%@-%@-%d %@:%@",time[0],time[1],(day+2),horse,minute];
}
}
}
- 时间空间
- 时间空间
- 时间 空间 效率
- 时间与空间
- 时间,空间和效率
- 时间,空间和效率
- 时间复杂度,空间复杂度
- 与时间,空间无关...........
- 时间复杂度&空间复杂度
- 以空间换时间
- 时间复杂度 & 空间复杂度
- SQL 时间空间
- 以时间换空间
- 时间复杂度、空间复杂度
- 时间与空间复杂度
- 算法复杂度-时间-空间
- 时间/空间复杂度浅析
- 时间空间复杂度
- 如何排查并解决SEAndroid 的审计不通过
- 【leetcode】278. First Bad Version
- Android架构实例分析之编写hello驱动的HAL层代码
- 切换场景的动画
- Just a Html
- 时间空间
- 小数值1.5625的二进制表示是?----阿里巴巴2015实习生笔试题
- django render和render_to_response()
- HashMap以及跟HashMap相关的内容
- linux 内存调优
- PHP 里面session_unset()函数与session_destroy()函数比较
- 通过俩个经纬度计算之间的距离(单位m)
- 学习动画——专用图层
- 在CSS中,html中的标签元素三种不同的类型