GithubHelp home page GithubHelp logo

xiaozhuxiong121 / pgdatepicker Goto Github PK

View Code? Open in Web Editor NEW
1.1K 1.1K 208.0 5.71 MB

日期选择器,支持年、年月、年月日、年月日时、年月日时分、年月日时分秒、月日、月日时、月日时分、月日时分秒、时、时分、时分秒、分秒、月日周 时分等

License: MIT License

Ruby 0.36% Objective-C 95.83% Swift 3.80%
datepicker pickerview uidatepicker uipickerview

pgdatepicker's People

Contributors

feixue299 avatar lukehsbc avatar sujiewen avatar xiaozhuxiong121 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pgdatepicker's Issues

请教个问题!

大神 我想按照你的样式 更改为城市选择器 想把数据换掉 请问应该那个地方开始 我没找到你导入数据的地方。。。。

设置minimumDate和maximumDate后的bug

你好,我发现设置时日周 时分这里,设置他的minimumDate和maximumDate后,滑动月日和时之后,他的分会出现问题,截图如下
1515415605962

wechatimg493
wechatimg494
wechatimg495

只能选择一个分了。_minuteList里面只有一个元素了。

Pod失败

根据文档进行Pod,但是提示失败了,请问是我自己的问题还是你传的有问题?

一个建议

小于10的月日时分秒能不能改成00,01,02,03......格式!!!

时间选择有问题

c5116a94-e50a-4c9e-b8b8-36597100545a
[datePicker setDate:date animated:true];不跳转到对应的时间,差了几个月

- (void)setDate:(NSDate *)date animated:(BOOL)animated有个bug

PGDatePicker *datePicker = [[PGDatePicker alloc]init];
datePicker.delegate = self;
[datePicker show];
datePicker.datePickerMode = PGDatePickerModeYearAndMonth;
datePicker.minimumDate = [NSDate setYear:2017 month:11];
datePicker.maximumDate = [NSDate setYear:2017 month:12];
[datePicker setDate:_seletedDate];

月份只有11月12月,调用- (void)setDate:(NSDate *)date的时候,这样设置是不起作用的。
查看了下源码。原因在这个方法中- (void)setDate:(NSDate *)date animated:(BOOL)animated

case PGDatePickerModeYearAndMonth:
        {
            if (components.year > self.maximumComponents.year) {
                components.year = self.maximumComponents.year;
            }else if (components.year < self.minimumComponents.year) {
                components.year = self.minimumComponents.year;
            }
            NSInteger row = components.year - self.minimumComponents.year;
            [self.pickerView selectRow:row inComponent:0 animated:animated];
            {
                NSInteger row = 0;
    
                NSString *string = [NSString stringWithFormat:@"%ld", components.month];
                if ([string integerValue] <= self.monthList.count) {//原因在这里
                    row = [self.monthList indexOfObject:string];
                }
                [self.pickerView selectRow:row inComponent:1 animated:animated];
            }
        }

我添加了个修复的代码。但是只针对PGDatePickerModeYearAndMonth做了处理,其他模式下没用到就没管

case PGDatePickerModeYearAndMonth:
        {
            if (components.year > self.maximumComponents.year) {
                components.year = self.maximumComponents.year;
            }else if (components.year < self.minimumComponents.year) {
                components.year = self.minimumComponents.year;
            }
            NSInteger row = components.year - self.minimumComponents.year;
            [self.pickerView selectRow:row inComponent:0 animated:animated];
            {
                //<<<<
                __block NSInteger row = 0;
                //>>>>
                NSString *string = [NSString stringWithFormat:@"%ld", components.month];
                if ([string integerValue] <= self.monthList.count) {
                    row = [self.monthList indexOfObject:string];
                }
                //<<<<
                else if (self.monthList.count > 0){
                    [self.monthList enumerateObjectsUsingBlock:^(NSString *monthNum, NSUInteger idx, BOOL * _Nonnull stop) {
                        if ([monthNum isEqualToString:string ]) {
                            row = idx;
                            *stop = YES;
                        }
                    }];
                }
                //>>>>
                [self.pickerView selectRow:row inComponent:1 animated:animated];
            }
        }

加了个遍历去获取选中的月份在monthList中的index

滚动时,有残留,但是运行您的DEMO,没有任何问题。不知道为何

版本:通过pod 'PGDatePicker', '>= 2.0'引入
用法:
PGDatePickManager *datePickManager=[[PGDatePickManager alloc]init]; datePickManager.cancelButtonTextColor=BLUEPRIMARY; datePickManager.confirmButtonTextColor=BLUEPRIMARY; datePickManager.isShadeBackgroud=YES; PGDatePicker *datePicker = datePickManager.datePicker; datePicker.datePickerMode=PGDatePickerModeDateHourMinute; datePicker.datePickerType=PGDatePickerType1; datePicker.delegate = self; datePicker.minimumDate=[NSDate new]; datePicker.maximumDate=[TimeUtil getFutureDate:100]; [self.controller presentViewController:datePickManager animated:false completion:nil];

如图:
image
image

设置最小的天数发现没有用,调试发现代码中你过滤掉了最小的天数

- (void)setDayListForMonthDays:(NSInteger)day { NSMutableArray *days = [NSMutableArray arrayWithCapacity:day]; NSInteger minDay = self.minimumComponents.day, maxDay = self.maximumComponents.day; if (self.currentComponents.year == self.maximumComponents.year) { if (self.currentComponents.month == self.maximumComponents.month) { day = maxDay; } } if (_setDate) { minDay = 1; } // 此处 i 的值应为minDay for (NSUInteger i = 1; i <= day; i++) { [days addObject:[@(i) stringValue]]; } self.dayList = days; }

发现一个功能上的问题

在设置样式过程中, 选中行的颜色与非选中行的颜色并没有效果区分
datePicker.titleColorForSelectedRow = [UIColor redColor];
datePicker.titleColorForOtherRow = [UIColor blackColor];

怎么改变PGPickerView的位置

1,怎么改变PGPickerView的位置, 想把它放在中间
2,现在默认是选择第三行,怎么把它修改成第一行,如图把选中的那里放在箭头指向位置
3,江湖救急,非常感谢
image

显示年月的时候,最大最小时间限制有问题

- (IBAction)yearAndMonthHandler:(id)sender {
    PGDatePicker *datePicker = [[PGDatePicker alloc]init];
    datePicker.delegate = self;
    [datePicker showWithShadeBackgroud];
    datePicker.datePickerType = PGPickerViewType3;
    datePicker.datePickerMode = PGDatePickerModeYearAndMonth;
    
    
    datePicker.minimumDate = [NSDate setYear:2015 month:5];
    datePicker.maximumDate = [NSDate setYear:2017 month:10];
    
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm";
    NSDate *date = [dateFormatter dateFromString: @"2015-08-10 05:04"];
    [datePicker setDate:date animated:true];
}

只显示年月的时候。设置最大最小时间限制的时候有两个问题。如果调用setDate:animated:设置一个默认选中的时间,而该时间是月份不全的年份中,那么该年份会显示完整的月份。最小时间限制没有作用。比如最小时间设置为2015年5月。然后setdate为2015年的随便一个月份。那么2015年对应的月份可以选到1~10月,后面的11月12月也没有了,是因为最大时间是2017年10月。就是两个bug

pod 出错

[!] Unable to satisfy the following requirements:

  • PGDatePicker (>= 2.0) required by Podfile

None of your spec sources contain a spec satisfying the dependency: PGDatePicker (>= 2.0).

You have either:

  • out-of-date source repos which you can update with pod repo update or with pod install --repo-update.
  • mistyped the name or version.
  • not added the source repo that hosts the Podspec to your Podfile.

Note: as of CocoaPods 1.0, pod repo update does not happen on pod install by default.

Question

你好,我想问下,我安装PGDatePicker成功了,但是在import的时候为什么会报错,说PGDatePicker不存在啊

同时设置最大日期和最小日期,出现错误

- (void)showDatePicker {
    PGDatePicker *datePicker = [[PGDatePicker alloc] init];
    datePicker.delegate = self;
    datePicker.datePickerMode = PGDatePickerModeYearAndMonth;
    
    NSDateFormatter *dataFormant = [[NSDateFormatter alloc] init];
    [dataFormant setDateFormat: @"yyyyMM"];
    NSString *newtime = [dataFormant stringFromDate:[NSDate date]];
    
    datePicker.maximumDate = [dataFormant dateFromString:newtime];
    
    if ([EMUtil isValidString: self.model.from]) {
        if (!self.chooseFrom) {
            //选择了开始时间再去选结束时间
            NSDate *mindate = [dataFormant dateFromString:self.model.from];
            datePicker.minimumDate = mindate;
        }
    }
    
    if ([EMUtil isValidString: self.model.to]) {
        if (self.chooseFrom) {
            // 选择了结束时间再去选开始时间
            NSDate *maxdate = [dataFormant dateFromString:self.model.to];
            datePicker.maximumDate = maxdate;
        }
    }
    
    [datePicker show];
} 

目前需求是选择开始时间和结束时间,现在选择了开始时间,想要限制结束时间选择框的选择范围在开始时间和当前时间之间。以上是代码。
当[datePicker show]执行后,选择框中的日期范围不对。
请看一下是我的代码有问题,还是这个库实现的有问题。谢谢。

关于时分选择

打开时间选择,默认显示上一次选中的的时间是
NSDate *date = [NSDate setHour:10 minute:10];
[datePicker setDate:date animated:true];
这样么,

重复调用show函数视图已有但是位置不正确

作者大大好!
[UIView animateWithDuration:0.3 animations:^{ self.headerView.frame = CGRectMake(0, kScreenHeight - height - kHeaderViewHeight, kScreenWidth, kHeaderViewHeight); self.frame = CGRectMake(0, CGRectGetMaxY(self.headerView.frame), kScreenWidth, height); }];

这段代码应该加在-show函数的结尾,而不应该在layoutsubviews,因为重复调用show的话,并没有弹出显示。。。

日期最大最小有问题

例如设置 2017-9-30最小 2017-10-2最大 ,初始化时日期列显示所有,在滚动第二列后才显示正确的日期选择列
另外, 调用消失后不进行初始化仅调用show方法无效,需要重新初始化或自己修改代码,忘以后完善

有没有方法添加一个半透明背景

个人认为需要添加一个半透明背景的方法。好多设计图弹选择器都加了一个黑色半透明遮罩。

比如增加一个show方法,在用一个属性可以改变遮罩的颜色

  • (void)showWithShadeBackgroud:(BOOL)isShowShade;

发现个小问题

在执行show方法之前设定titleLabel属性时无效,原因是在show之前没创建相应的控件。还有titleColorForOtherRow该属性设置无效,望及时解决。

日期选择bug

操作如下:
当mode为PGDatePickerModeDate时,选择2018年5月31日,当将月份滚动到4月时,日的那一列不跟年月两列对其。

设置maximumDate后出现bug

设置maximumDate为当前日期后,当年份视图滑动到小于当前年时候,月份不能显示12个月,参考图如下:
2017-09-05 10 19 08

动态设置最小值最大值存在异常

if self.maxEndDate != nil {
datePicker.maximumDate = self.maxEndDate!
}
if self.minEndDate != nil {
datePicker.minimumDate = self.minEndDate!
}

这样动态的设置区间最大值为默认值加六个月 最小值加一个月 为什么最小值设置正常 最大值设置失败呢?
但是加六个跨年后 设置的区间却是正确的。 不跨年所有情况都是直接显示到12月份

bug

PGDatePicker的 setDate方法如果animated 是yes 的话会造成页面卡顿的定位不准确

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.