iOS时间选择框
2018-07-20 来源:open-open
一、头文件
#import <UIKit/UIKit.h> @class ITTPickView; @protocol ITTPickViewDelegate <NSObject> @optional -(void)toobarDonBtnHaveClick:(ITTPickView *)pickView resultString:(NSString *)resultString; @end @interface ITTPickView : UIView @property(nonatomic,weak) id<ITTPickViewDelegate> delegate;//委托 /** * 通过时间创建一个DatePicker * * @param date 默认选中时间 * @param isHaveNavControler是否在NavControler之内 * * @return 带有toolbar的datePicker */ -(instancetype)initDatePickWithDate:(NSDate *)defaulDate datePickerMode:(UIDatePickerMode)datePickerMode isHaveNavControler:(BOOL)isHaveNavControler; /** * 从窗口移除本控件 */ -(void)removeView; /** * 在窗口显示本控件 */ -(void)showView; @end
二、ITTPickView的实现,主要的控件UIToolBar、UIDatePicker,点击确定后执行-(void)toobarDonBtnHaveClick:(ITTPickView *)pickView resultString:(NSString *)resultString(因为是可选的委托事件,实现了才会执行);获得选择的时间字符串。
#import "ITTPickView.h" #define ITTToobarHeight 40 @interface ITTPickView () @property (nonatomic,assign) NSDate *defaulDate;//默认时间 @property (nonatomic,strong) UIDatePicker *datePicker;//datePicker控件 @property (nonatomic,assign) NSInteger pickeviewHeight;//pickerView的高度 @property (nonatomic,strong) UIToolbar *toolbar;//toolBar控件 @property (nonatomic,copy) NSString *resultString;//返回的时间字符串 @property (nonatomic,assign) NSInteger selfOriginy;//当前view的frame.origin.y @property (nonatomic,assign) NSInteger selfViewInitH;//初始状态view的frame.origin.y @end @implementation ITTPickView //初始化ITTPickView, - (instancetype)initDatePickWithDate:(NSDate *)defaulDate datePickerMode:(UIDatePickerMode)datePickerMode isHaveNavControler:(BOOL)isHaveNavControler { self = [super init]; if (self) { self.defaulDate = defaulDate; [self setUpDatePickerWithdatePickerMode:datePickerMode]; [self setFrameWith:isHaveNavControler]; [self setUpToolBar]; } return self; } //设定ITTPickView的frame大小 -(void)setFrameWith:(BOOL)isHaveNavControler { CGFloat toolViewX = 0; CGFloat toolViewH = self.pickeviewHeight + ITTToobarHeight; CGFloat toolViewY; if (isHaveNavControler) { toolViewY = [UIScreen mainScreen].bounds.size.height - toolViewH - 50; }else { toolViewY = [UIScreen mainScreen].bounds.size.height - toolViewH; } CGFloat toolViewW = [UIScreen mainScreen].bounds.size.width; CGFloat toolViewInitH = [UIScreen mainScreen].bounds.size.height; self.selfViewInitH = toolViewInitH;//初始状态view的frame.origin.y self.selfOriginy = toolViewY;//当前view的frame.origin.y self.frame = CGRectMake(toolViewX, toolViewInitH, toolViewW, toolViewH); } //设定datePicker控件的样式以及frame大小,并作为view的子视图 -(void)setUpDatePickerWithdatePickerMode:(UIDatePickerMode)datePickerMode { UIDatePicker *datePicker = [[UIDatePicker alloc] init]; datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh-CN"]; datePicker.datePickerMode = datePickerMode; datePicker.backgroundColor = [UIColor whiteColor]; if (self.defaulDate) { [datePicker setDate:self.defaulDate]; } self.datePicker = datePicker; datePicker.frame = CGRectMake(0, ITTToobarHeight, [UIScreen mainScreen].bounds.size.width, datePicker.frame.size.height); self.pickeviewHeight = datePicker.frame.size.height; [self addSubview:datePicker]; } //设置toolBar的各个属性,并作为view的子视图 - (void)setUpToolBar { self.toolbar = [self setToolbarStyle]; [self setToolbarWithPickViewFrame]; [self addSubview:self.toolbar]; } //设置toolBar的样式 -(UIToolbar *)setToolbarStyle { UIToolbar *toolbar = [[UIToolbar alloc] init]; UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithTitle:@" 取消 " style:UIBarButtonItemStylePlain target:self action:@selector(removeView)]; UIBarButtonItem *centerSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; UIBarButtonItem *right = [[UIBarButtonItem alloc] initWithTitle:@" 确定 " style:UIBarButtonItemStylePlain target:self action:@selector(doneClick)]; toolbar.items = @[lefttem, centerSpace, right]; return toolbar; } //设定tooBar的frame大小 - (void)setToolbarWithPickViewFrame { self.toolbar.frame = CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, ITTToobarHeight); } //点击确定按钮 -(void)doneClick { if (self.datePicker) { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"yyyy-MM-dd"; self.resultString = [dateFormatter stringFromDate:self.datePicker.date]; } if ([self.delegate respondsToSelector:@selector(toobarDonBtnHaveClick:resultString:)]) { [self.delegate toobarDonBtnHaveClick:self resultString:self.resultString]; } [self removeView]; } /** * 从窗口移除本控件 */ - (void)removeView { [UIView animateWithDuration:0.25f animations:^{ self.frame = CGRectMake(self.frame.origin.x, self.selfViewInitH, self.frame.size.width, self.frame.size.height); } completion:^(BOOL finished) { if (finished) { [self removeFromSuperview]; } }]; } /** * 在窗口显示本控件 */ - (void)showView { [[UIApplication sharedApplication].keyWindow addSubview:self]; [UIView animateWithDuration:0.25f animations:^{ self.frame = CGRectMake(self.frame.origin.x, self.selfOriginy, self.frame.size.width, self.frame.size.height); } completion:^(BOOL finished) { }]; } @end
三、运用ITTPickView
UIButton *testBitton = [[UIButton alloc] initWithFrame:CGRectMake(0, 450, 111, 40)]; [testBitton setBackgroundColor:[UIColor redColor]]; [testBitton addTarget:self action:@selector(test) forControlEvents:UIControlEventTouchUpInside]; //点击按钮弹出时间选择框 - (void)test { ITTPickView *datePicker = [[ITTPickView alloc] initDatePickWithDate:[NSDate date] datePickerMode:UIDatePickerModeDate isHaveNavControler:NO]; [datePicker showView]; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
下一篇:Android画板实现
最新资讯
热门推荐