zoukankan      html  css  js  c++  java
  • UI进阶--UIDatePicker和UIToolBar控件

    Date Picker:显示时间的控件有默认宽高,不用设置数据源和代理。

    一些基本属性:

    1 @property (nonatomic) UIDatePickerMode datePickerMode; // default is UIDatePickerModeDateAndTime。UIDatePicker的格式,默认是时间加日期的显示方式
    2 @property (nonatomic, retain) NSLocale   *locale;   // default is [NSLocale currentLocale]. setting nil returns to default。本地化。
    3 @property (nonatomic, copy)   NSCalendar *calendar; // default is [NSCalendar currentCalendar]. setting nil returns to default。日历。
    4 @property (nonatomic, retain) NSTimeZone *timeZone; // default is nil. use current time zone or time zone from calendar。时区。
    5 @property (nonatomic, retain) NSDate *date;        // default is current date when picker created. Ignored in countdown timer mode. for that mode, picker starts at 0:00。时间。
    6 @property (nonatomic, retain) NSDate *minimumDate; // specify min/max date range. default is nil. When min > max, the values are ignored. Ignored in countdown timer mode。最小时间。
    7 @property (nonatomic, retain) NSDate *maximumDate; // default is nil。最大时间。

    UIToolBar,只能添加UIBarButtonItem子控件。用作间隔的Item样式Flexible Space Bar Button Item能够自动填补满Bar中的空隙,Fixed Space Bar Button Item只能填充固定的空隙。

    自定义XIB的界面:

    自定义一个键盘:当点击文本输入框时弹出一个日期选择器,示例代码如下:

    自定义的UIToolBar:

     1 //
     2 //  JWKeyboardToolbar.h
     3 //  DatePicker
     4 //
     5 //  Created by xiaomoge on 14/12/27.
     6 //  Copyright (c) 2014年 xiaomoge. All rights reserved.
     7 //
     8 
     9 #import <UIKit/UIKit.h>
    10 
    11 @class JWKeyboardToolbar;
    12 @protocol JWKeyboardToolbarDelegate <NSObject>
    13 
    14 @optional
    15 
    16 /**
    17  *  item.tag  0 表示上一个按钮 1:下一个按钮 2:done完成按钮
    18  */
    19 -(void)keyboardToolbar:(JWKeyboardToolbar *)toolbar btndidSelected:(UIBarButtonItem *)item;
    20 
    21 @end
    22 
    23 @interface JWKeyboardToolbar : UIToolbar
    24 
    25 +(instancetype)toolbar;
    26 
    27 @property (weak, nonatomic) id<JWKeyboardToolbarDelegate> kbDelegate;//键盘的代理
    28 
    29 @end
     1 //
     2 //  JWKeyboardToolbar.m
     3 //  DatePicker
     4 //
     5 //  Created by xiaomoge on 14/12/27.
     6 //  Copyright (c) 2014年 xiaomoge. All rights reserved.
     7 //
     8 
     9 #import "JWKeyboardToolbar.h"
    10 
    11 
    12 @interface JWKeyboardToolbar()
    13 
    14 @end
    15 
    16 @implementation JWKeyboardToolbar
    17 
    18 +(instancetype)toolbar{
    19     return [[[NSBundle mainBundle] loadNibNamed:@"JWKeyboardToolbar" owner:nil options:nil] lastObject];//JWKeyboardToolbar.xib为上面xib图
    20 }
    21 
    22 - (IBAction)itemBtnClick:(id)sender {
    23     
    24     //判断代理有没有实现方法
    25     if ([self.kbDelegate respondsToSelector:@selector(keyboardToolbar:btndidSelected:)]) {
    26         [self.kbDelegate keyboardToolbar:self btndidSelected:sender];
    27     }
    28     
    29 }
    30 @end

    Controller:

    //
    //  ViewController.m
    //  DatePicker
    //
    //  Created by xiaomoge on 14/12/26.
    //  Copyright (c) 2014年 xiaomoge. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "JWKeyboardToolbar.h"
    
    @interface ViewController ()<JWKeyboardToolbarDelegate>
    @property (strong, nonatomic) UIDatePicker *datepicker;
    @property (weak, nonatomic) IBOutlet UITextField *textField;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        //创建datapikcer
        self.datepicker = [[UIDatePicker alloc] init];
        //本地化
        self.datepicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh"];
        //日期控件格式
        self.datepicker.datePickerMode = UIDatePickerModeDate;
        
        //设置textfield的键盘
        self.textField.inputView = self.datepicker;
        //创建一个UIToolBar
        JWKeyboardToolbar *toolbar = [JWKeyboardToolbar toolbar];
        //设置键盘的代理
        toolbar.kbDelegate = self;
        //设置textfield的辅助工具条
        self.textField.inputAccessoryView = toolbar;
    }
    
    #pragma mark 自定义键盘工具条的代理方法
    -(void)keyboardToolbar:(CZKeyboardToolbar *)toolbar btndidSelected:(UIBarButtonItem *)item{
        if (item.tag == 2) {//Done按钮点击
            //获取日期显示在textField
            NSDate *date = self.datepicker.date; 
            //日期转字符串
            NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
            //设置日期格式
            dateFormatter.dateFormat = @"yyyyMMdd";
            NSString *dateStr =  [dateFormatter stringFromDate:date];
            self.textField.text = dateStr;
        }
    }
    @end

    上面创建的UIToolBar是通过xib创建的,以下是通过纯代码创建:

     1 -(void)codeForToolbar{
     2     //代码创建UIToolbar
     3     UIToolbar *toolbar = [[UIToolbar alloc] init];
     4     toolbar.backgroundColor = [UIColor grayColor];
     5     //屏幕宽度
     6     CGFloat screenW = [[UIScreen mainScreen] bounds].size.width;
     7     toolbar.bounds = CGRectMake(0, 0, screenW, 44);
     8    //上一个按钮
     9     UIBarButtonItem *previousBtn = [[UIBarButtonItem alloc] initWithTitle:@"上一个" style:UIBarButtonItemStylePlain target:nil action:nil];
    10     //下一个按钮
    11     UIBarButtonItem *nextBtn = [[UIBarButtonItem alloc] initWithTitle:@"下一个" style:UIBarButtonItemStylePlain target:nil action:nil];
    12     //done按钮
    13     UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:nil action:nil];
    14     
    15     //固定长度的按钮
    16     UIBarButtonItem *fixedBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    17     //代码实现要设置宽度
    18     fixedBtn.width = 10;
    19 
    20     //可拉伸的按钮
    21     UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
    22     //添加UIToolbar里面的按钮
    23     toolbar.items = @[previousBtn,fixedBtn,nextBtn,flexible,doneBtn];
    24 }
  • 相关阅读:
    Java动态规划实现将数组拆分成相等的两部分
    动态规划解决hdu龟兔赛跑
    Eclipse上将maven项目部署到tomcat,本地tomcat下,webapps下,web-inf下lib下没有jar包决绝方案
    【转】spring IOC和AOP的理解
    Eclipse创建一个普通的java web项目
    linux服务器自动备份与删除postgres数据库数据
    开启Linux服务器vnc远程桌面详细步骤
    设计模式---JDK动态代理和CGLIB代理
    菜谱
    网络协议-dubbo协议
  • 原文地址:https://www.cnblogs.com/xiaomoge/p/4200885.html
Copyright © 2011-2022 走看看