iOS-自定义起始时间选择器视图

随着界面的整体效果的各种展现, 起始时间选择器的展现也需求突出!

最近项目中发现时间选择器使用处还挺多, 数了数原型图发现有6处. 便决定自定义时间选择器视图写个 Demo, 封装好在所需控制器里直接调用!

一、实现功能及主要思路

实现功能:

自定义起始时间选择器视图, 调起时间选择器, 传值(起始时间/截止时间), 两者时间均要合理, 不能超过未来时间,  并且起始时间不能大于截止时间.  点击取消或空白处收起时间选择器.

其中两者时间(起始时间/截止时间)是可以做限制,例如:当月月初1日 到 当天时间.


主要思路:

  • 1. 创建时间选择器Picker 且确认取消按钮实现功能逻辑

  • 2. 创建展示时间菜单的按钮视图 (按钮: 图片在右,标题在左的按钮)

  • 3. 创建时间选择器视图 且 起始时间/截止时间逻辑判断

  • 4. 使用代理传值起始时间/截止时间(时间串转换)

二、程序实现

第一步. 创建时间选择器Picker 且确认取消按钮实现功能逻辑

自定义ZLDatePickerView 文件:

1
2
3
4
5
6
7
8
9
@property (nonatomic, assign) id<ZLDatePickerViewDelegate> deleagte;
// 最初/小时间(一般为左边值)
@property (nonatomic, strong) NSDate *minimumDate;
// 截止时间(一般为右边值)
@property (nonatomic, strong) NSDate *maximumDate;
// 当前选择时间
@property (nonatomic, strong) NSDate *date;
+ (instancetype)datePickerView;
- ( void )showFrom:(UIView *)view;

使用代理传值:

1
2
3
@protocol ZLDatePickerViewDelegate <NSObject>
- ( void )datePickerView:(ZLDatePickerView *)pickerView backTimeString:(NSString *)string To:(UIView *)view;
@end

使用 xib 展现datePicker:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
+ (instancetype)datePickerView {
     
     ZLDatePickerView *picker = [[NSBundle mainBundle] loadNibNamed:@ "ZLDatePickerView"  owner:nil options:nil].lastObject;
     picker.frame = CGRectMake(0, UI_View_Height - 250, UI_View_Width, 250);
     picker.maximumDate = [NSDate date];
     
     return  picker;
}
- ( void )showFrom:(UIView *)view {
     UIView *bgView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
     bgView.backgroundColor = [UIColor lightGrayColor];
     bgView.alpha = 0.5;
     
     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
     [bgView addGestureRecognizer:tap];
     
     self.fromView = view;
     self.bgView = bgView;
     [[UIApplication sharedApplication].keyWindow addSubview:self.bgView];
     [[UIApplication sharedApplication].keyWindow addSubview:self];
}

起始时间/截止时间设值:

1
2
3
4
5
6
7
8
9
- ( void )setMinimumDate:(NSDate *)minimumDate {
     self.datePicker.minimumDate = minimumDate;
}
- ( void )setMaximumDate:(NSDate *)maximumDate {
     self.datePicker.maximumDate = maximumDate;
}
- ( void )setDate:(NSDate *)date {
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值