本文實例為大家介紹了iOS時間選擇框的示例代碼,供大家參考,具體內容如下
代碼:
一、頭文件
#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]; }
以上就是本文的全部內容,希望對大家的學習有所幫助。