ios 时间选择器 界面_ios,ipad界面选择相册 - CSDN
  • 日期选择器(UIDatePicker)继承了UIControl,因此UIDatePicker可以作为活动控件使用,能与用户交互,既可在Interface Builder中为UIDatePicker的Value Changed事件绑定IBAction事件处理方法,也可在代码中为该...

    UIDatePicker是一个可以用来选择日期和时间的控件。除此之外,它也可作为倒计时控件。

    日期选择器(UIDatePicker)继承了UIControl,因此UIDatePicker可以作为活动控件使用,能与用户交互,既可在Interface Builder中为UIDatePickerValue Changed事件绑定IBAction事件处理方法,也可在代码中为该控件绑定事件处理方法。

    Interface Builder中选中一个UIDatePicker,打开对应的属性检查器面板,即可看到如图10.42所示的面板。

    10.42  UIDatePicker对应的属性检查器


    从图10.42可以看出,UIDatePicker支持如下属性。

    1. Mode

    该属性用于设置该UIDatePicker的模式,它支持如下列表项。

    Ø Date:该UIDatePicker控件仅显示日期,不显示时间。

    Ø Time:该UIDatePicker控件仅显示时间,不显示日期。

    Ø Date and Time:该UIDatePicker控件同时显示日期和时间。

    Ø Count Down Timer:该UIDatePicker控件仅显示为倒计时器。

    2. Locale

    该属性用于设置该UIDatePicker的国际化Locale,假设设置该UIDatePicker控件国际化Locale为简体中文环境,那么它将以简体中文习惯显示日期。实际上,我们通常无须手动设置Locale,该UIDatePicker控件默认使用iOS系统的国际化Locale

    3. Interval

    仅当该UIDatePicker控件采用TimeDate and TimeCount Down Timer这三种模式时有效,该属性设置UIDatePicker控件上两个时间之间的间隔。

    4. Constraints

    该属性为UIDatePicker控件设置最小时间和最大时间。如果设置了该属性值,用户无法通过该UIDatePicker控件选择超出该范围的日期和时间。

    5. Timer

    仅当该UIDatePicker控件采用Count Down Timer模式时有效,该属性设置该控件作为倒计时控件时剩下的秒数。

    下面通过一个简单的例子来示范UIDatePicker的功能和用法,先创建一个Single View Application,并使用Interface Builder打开应用的界面设计文件,将UIDatePickerUIButton拖入应用界面中。对UIDatePicker进行如下修改。

    Ø 使用Date and Time模式,让该选择器同时显示日期和时间。

    Ø 将该UIDatePickerLocale设为Chinese(Simplified),强制该UIDatePicker显示简体中文。

    Ø 勾选Minimum DateMaximum Date,并设置一个最小时间和最大时间。

    进行上面的修改之后,将UIDatePickerUIButton两个控件摆放整齐,如图10.43所示。

    10.43  设计应用界面


    程序界面设计完成之后,在Interface Builder中将UIDatePicker控件绑定到datePicker IBOutlet属性,并为按钮的Touch Up Inside事件绑定clicked: IBAction事件处理方法。经过上面所示的步骤之后,接下来修改控制器类的实现部分代码,主要是实现clicked:事件处理方法,其代码如下。

    程序清单:codes/10/10.11/UIDatePickerTest/UIDatePickerTest/FKViewController.m

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    @implementation FKViewController
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    }
    - (IBAction)clicked:(id)sender {
        // 获取用户通过UIDatePicker设置的日期和时间
        NSDate *selected = [self.datePicker date];
        // 创建一个日期格式器
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        // 为日期格式器设置格式字符串
        [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm +0800"];
        // 使用日期格式器格式化日期、时间
        NSString *destDateString = [dateFormatter stringFromDate:selected];
        NSString *message =  [NSString stringWithFormat:
            @"您选择的日期和时间是:%@", destDateString];
        // 创建一个UIAlertView对象(警告框),并通过该警告框显示用户选择的日期、时间
        UIAlertView *alert = [[UIAlertView alloc]
            initWithTitle:@"日期和时间"
            message:message
            delegate:nil
            cancelButtonTitle:@"确定"
            otherButtonTitles:nil];
        // 显示UIAlertView
        [alert show];
    }
    @end

    上面程序中,clicked:方法的粗体字代码先获取UIDatePicker控件的日期、时间,然后程序创建了一个NSDateFormatter对象(日期格式器),并使用该日期格式器对用户选择的日期、时间执行格式化。最后使用一个UIAlertView显示用户选择的日期、时间。

    编译、运行该程序,并通过UIDatePicker控件选择一个日期、时间,然后单击“确定”按钮,即可看到如图10.44所示的效果。


    实例:倒计时器

    如果将UIDatePicker的模式设置为Count Down Timer,即可让该控件作为倒计时器使用。当将UIDatePicker作为倒计时器使用时,程序还应该启动一个定时器定期更新该UIDatePicker的剩余时间。由此可见,把UIDatePicker作为Count Down Timer模式使用时,该控件最重要的属性就是countDownDuration,该属性代表该倒计时器的剩余时间,程序既可通过countDownDuration属性获取该控件的剩余时间,也可通过修改该属性来改变该控件显示的剩余时间。

    下面通过示例介绍倒计时器的用法。首先创建一个Single View Application,并使用Interface Builder打开应用的界面设计文件,将UIDatePickerUIButton拖入应用界面中。将UIDatePicker改为Count Down Timer模式,让该选择器作为定时器使用。进行上面的修改之后,将UIDatePickerUIButton两个控件摆放整齐。

    界面设计完成之后,在Interface Builder中将UIDatePicker控件绑定到countDown IBOutlet属性,将按钮控件绑定到startBn IBOutlet属性,并为按钮的Touch Up Inside事件绑定clicked: IBAction事件处理方法。经过上面的步骤之后,下面来修改控制器类的实现部分代码,主要是实现clicked:事件处理方法,其代码如下。

    程序清单:codes/10/10.11/CountDownTest/CountDownTest/FKViewController.m

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    @implementation FKViewController
    NSTimer* timer;
    NSInteger leftSeconds;  // ①
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // 设置使用Count Down Timer模式
        self.countDown.datePickerMode = UIDatePickerModeCountDownTimer;
    }
    - (IBAction)clicked:(id)sender {
        // 获取该倒计时器的剩余时间
        leftSeconds = self.countDown.countDownDuration;
        // 禁用UIDatePicker控件和按钮
        self.countDown.enabled = NO;
        [sender setEnabled:NO];
        // 初始化一个字符串
        NSString *message =  [NSString stringWithFormat:
            @"开始倒计时?您还剩下【%d】秒", leftSeconds];
        // 创建一个UIAlertView(警告框)
        UIAlertView *alert = [[UIAlertView alloc]
                            initWithTitle:@"开始倒计时?"
                            message:message
                            delegate:nil
                            cancelButtonTitle:@"确定"
                            otherButtonTitles:nil];
        // 显示UIAlertView控件
        [alert show];
        // 启用计时器,控制每隔60秒执行一次tickDown方法
        timer = [NSTimer scheduledTimerWithTimeInterval:60
            target:self selector:@selector(tickDown)
            userInfo:nil repeats:YES];
    }
    - (void) tickDown
    {
        leftSeconds -= 60;  // 将剩余时间减少60秒
        self.countDown.countDownDuration = leftSeconds;  // 修改UIDatePicker的剩余时间
        if(leftSeconds <= 0)  // 如果剩余时间小于或等于0
        {
            // 取消定时器
            [timer invalidate];
            // 启用UIDatePicker控件和按钮
            self.countDown.enabled = YES;
            self.startBn.enabled = YES;
        }
    }
    @end

    上述程序中,①号粗体字代码定义了一个leftSeconds变量,该变量用于保存倒计时器的剩余时间,当用户单击程序界面时,将会激发clicked:方法,该方法将启动一个定时器控制每隔60秒执行一次tickDown方法,而tickDown方法每执行一次,程序就将倒计时器的剩余时间减少60,并动态修改倒计时器的剩余时间,这样就可让UIDatePicker显示的剩余时间减少。

    编译、运行该程序,通过UIDatePicker设置倒计时器的剩余时间后,单击“开始”按钮,即可看到该倒计时器每隔60秒跳动一次,跳动一次后,剩余时间减少1分钟,如图10.45所示。


    ————本文节选自《疯狂ios讲义(上)》



    展开全文
  • 仿ios时间选择器

    2018-04-12 15:42:00
    可以自定义设置开始时间和结束时间,弹出时默认选中的时间,支持时分年月日等等,先看效果图吧,简单的main界面:然后是各个样式的选择器 01: 年月选择器:02: 年-月-日 时:分选择器:03: 年-月-日 选择器04...
    可以自定义设置开始时间和结束时间,弹出时默认选中的时间,支持时分年月日等等,先看效果图吧,简单的main界面:

    然后是各个样式的选择器 01:   年月选择器:

    02:   年-月-日  时:分选择器:

    03:   年-月-日 选择器

    04:年-月  时:分 选择器 (这个可能不怎么用到,但我用到了  恶心。)


    暂时就先实现了这几个效果,因为最后04:年-月  时:分 选择器这个我项目不需要设置默认时间所以代码里也只有他功能比较简单。

    代码就不贴了,太多,我讲一下使用的方法

    UIDateTimeActivity ui4 = new UIDateTimeActivity(this,DateAndTimeMenu.DATEYMHM,"2017-01-01 10:10","2018-06-08 11:11","2017-06-08 13:13");
    ui4.show();
    ui4.setCallBack(this);

    构造里五个参数,当前activity的context,一个枚举常量(1-4四个数字代表四种选择器样式),开始时间,结束时间,默认时间。

    setCallBack回调函数  在每个WhellView滑动的时候  都会实时回调选中的值,获取选中时间值的回调函数:

    @Override
        public void sendSeledDateOrTime(String date_or_time) {
    //        Toast.makeText(this,date_or_time,Toast.LENGTH_LONG).show();
        }

    demo下载地址:https://download.csdn.net/download/android410223sun/10344090  (选择器的代码已经打成库在其中依赖了,可以自主修改)

    展开全文
  • 日期选择器(UIDatePicker)继承了UIControl,因此UIDatePicker可以作为活动控件使用,能与用户交互,既可在Interface Builder中为UIDatePicker的Value Changed事件绑定IBAction事件处理方法,也可在代码中为该...

    UIDatePicker是一个可以用来选择日期和时间的控件。除此之外,它也可作为倒计时控件。

    日期选择器(UIDatePicker)继承了UIControl,因此UIDatePicker可以作为活动控件使用,能与用户交互,既可在Interface Builder中为UIDatePickerValue Changed事件绑定IBAction事件处理方法,也可在代码中为该控件绑定事件处理方法。

    Interface Builder中选中一个UIDatePicker,打开对应的属性检查器面板,即可看到如图10.42所示的面板。

    10.42  UIDatePicker对应的属性检查器


    从图10.42可以看出,UIDatePicker支持如下属性。

    1. Mode

    该属性用于设置该UIDatePicker的模式,它支持如下列表项。

    Ø Date:该UIDatePicker控件仅显示日期,不显示时间。

    Ø Time:该UIDatePicker控件仅显示时间,不显示日期。

    Ø Date and Time:该UIDatePicker控件同时显示日期和时间。

    Ø Count Down Timer:该UIDatePicker控件仅显示为倒计时器。

    2. Locale

    该属性用于设置该UIDatePicker的国际化Locale,假设设置该UIDatePicker控件国际化Locale为简体中文环境,那么它将以简体中文习惯显示日期。实际上,我们通常无须手动设置Locale,该UIDatePicker控件默认使用iOS系统的国际化Locale

    3. Interval

    仅当该UIDatePicker控件采用TimeDate and TimeCount Down Timer这三种模式时有效,该属性设置UIDatePicker控件上两个时间之间的间隔。

    4. Constraints

    该属性为UIDatePicker控件设置最小时间和最大时间。如果设置了该属性值,用户无法通过该UIDatePicker控件选择超出该范围的日期和时间。

    5. Timer

    仅当该UIDatePicker控件采用Count Down Timer模式时有效,该属性设置该控件作为倒计时控件时剩下的秒数。

    下面通过一个简单的例子来示范UIDatePicker的功能和用法,先创建一个Single View Application,并使用Interface Builder打开应用的界面设计文件,将UIDatePickerUIButton拖入应用界面中。对UIDatePicker进行如下修改。

    Ø 使用Date and Time模式,让该选择器同时显示日期和时间。

    Ø 将该UIDatePickerLocale设为Chinese(Simplified),强制该UIDatePicker显示简体中文。

    Ø 勾选Minimum DateMaximum Date,并设置一个最小时间和最大时间。

    进行上面的修改之后,将UIDatePickerUIButton两个控件摆放整齐,如图10.43所示。

    10.43  设计应用界面


    程序界面设计完成之后,在Interface Builder中将UIDatePicker控件绑定到datePicker IBOutlet属性,并为按钮的Touch Up Inside事件绑定clicked: IBAction事件处理方法。经过上面所示的步骤之后,接下来修改控制器类的实现部分代码,主要是实现clicked:事件处理方法,其代码如下。

    程序清单:codes/10/10.11/UIDatePickerTest/UIDatePickerTest/FKViewController.m

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    @implementation FKViewController
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    }
    - (IBAction)clicked:(id)sender {
        // 获取用户通过UIDatePicker设置的日期和时间
        NSDate *selected = [self.datePicker date];
        // 创建一个日期格式器
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        // 为日期格式器设置格式字符串
        [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm +0800"];
        // 使用日期格式器格式化日期、时间
        NSString *destDateString = [dateFormatter stringFromDate:selected];
        NSString *message =  [NSString stringWithFormat:
            @"您选择的日期和时间是:%@", destDateString];
        // 创建一个UIAlertView对象(警告框),并通过该警告框显示用户选择的日期、时间
        UIAlertView *alert = [[UIAlertView alloc]
            initWithTitle:@"日期和时间"
            message:message
            delegate:nil
            cancelButtonTitle:@"确定"
            otherButtonTitles:nil];
        // 显示UIAlertView
        [alert show];
    }
    @end

    上面程序中,clicked:方法的粗体字代码先获取UIDatePicker控件的日期、时间,然后程序创建了一个NSDateFormatter对象(日期格式器),并使用该日期格式器对用户选择的日期、时间执行格式化。最后使用一个UIAlertView显示用户选择的日期、时间。

    编译、运行该程序,并通过UIDatePicker控件选择一个日期、时间,然后单击“确定”按钮,即可看到如图10.44所示的效果。


    实例:倒计时器

    如果将UIDatePicker的模式设置为Count Down Timer,即可让该控件作为倒计时器使用。当将UIDatePicker作为倒计时器使用时,程序还应该启动一个定时器定期更新该UIDatePicker的剩余时间。由此可见,把UIDatePicker作为Count Down Timer模式使用时,该控件最重要的属性就是countDownDuration,该属性代表该倒计时器的剩余时间,程序既可通过countDownDuration属性获取该控件的剩余时间,也可通过修改该属性来改变该控件显示的剩余时间。

    下面通过示例介绍倒计时器的用法。首先创建一个Single View Application,并使用Interface Builder打开应用的界面设计文件,将UIDatePickerUIButton拖入应用界面中。将UIDatePicker改为Count Down Timer模式,让该选择器作为定时器使用。进行上面的修改之后,将UIDatePickerUIButton两个控件摆放整齐。

    界面设计完成之后,在Interface Builder中将UIDatePicker控件绑定到countDown IBOutlet属性,将按钮控件绑定到startBn IBOutlet属性,并为按钮的Touch Up Inside事件绑定clicked: IBAction事件处理方法。经过上面的步骤之后,下面来修改控制器类的实现部分代码,主要是实现clicked:事件处理方法,其代码如下。

    程序清单:codes/10/10.11/CountDownTest/CountDownTest/FKViewController.m

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    @implementation FKViewController
    NSTimer* timer;
    NSInteger leftSeconds;  // ①
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // 设置使用Count Down Timer模式
        self.countDown.datePickerMode = UIDatePickerModeCountDownTimer;
    }
    - (IBAction)clicked:(id)sender {
        // 获取该倒计时器的剩余时间
        leftSeconds = self.countDown.countDownDuration;
        // 禁用UIDatePicker控件和按钮
        self.countDown.enabled = NO;
        [sender setEnabled:NO];
        // 初始化一个字符串
        NSString *message =  [NSString stringWithFormat:
            @"开始倒计时?您还剩下【%d】秒", leftSeconds];
        // 创建一个UIAlertView(警告框)
        UIAlertView *alert = [[UIAlertView alloc]
                            initWithTitle:@"开始倒计时?"
                            message:message
                            delegate:nil
                            cancelButtonTitle:@"确定"
                            otherButtonTitles:nil];
        // 显示UIAlertView控件
        [alert show];
        // 启用计时器,控制每隔60秒执行一次tickDown方法
        timer = [NSTimer scheduledTimerWithTimeInterval:60
            target:self selector:@selector(tickDown)
            userInfo:nil repeats:YES];
    }
    - (void) tickDown
    {
        leftSeconds -= 60;  // 将剩余时间减少60秒
        self.countDown.countDownDuration = leftSeconds;  // 修改UIDatePicker的剩余时间
        if(leftSeconds <= 0)  // 如果剩余时间小于或等于0
        {
            // 取消定时器
            [timer invalidate];
            // 启用UIDatePicker控件和按钮
            self.countDown.enabled = YES;
            self.startBn.enabled = YES;
        }
    }
    @end

    上述程序中,①号粗体字代码定义了一个leftSeconds变量,该变量用于保存倒计时器的剩余时间,当用户单击程序界面时,将会激发clicked:方法,该方法将启动一个定时器控制每隔60秒执行一次tickDown方法,而tickDown方法每执行一次,程序就将倒计时器的剩余时间减少60,并动态修改倒计时器的剩余时间,这样就可让UIDatePicker显示的剩余时间减少。

    编译、运行该程序,通过UIDatePicker设置倒计时器的剩余时间后,单击“开始”按钮,即可看到该倒计时器每隔60秒跳动一次,跳动一次后,剩余时间减少1分钟,如图10.45所示。


    ————本文节选自《疯狂ios讲义(上)》

    展开全文
  • iOS 自定义日期选择器

    2016-01-18 16:18:10
    前言封装了一个日期选择器,解决两个问题: 1、点击textField,键盘弹出和日期选择器弹出的逻辑处理; 2、同一个界面需要多次用到日期选择器时,判断点击的textField;一、封装日期选择器类YCDatePickerView1、新建...

    前言

    封装了一个日期选择器,解决两个问题:
    1、点击textField,键盘弹出和日期选择器弹出的逻辑处理;
    2、同一个界面需要多次用到日期选择器时,判断点击的textField;

    一、封装日期选择器类YCDatePickerView

    1、新建一个类,基于UIView,取名YCDatePickerView。

    2、YCDatePickerView类中.h文件代码如下:

    typedef void (^MyBasicBlock)(id result);
    
    #import <UIKit/UIKit.h>
    
    @interface YCDatePickerView : UIView
    
    @property (nonatomic, strong) UIButton *btnConfirm;
    @property (nonatomic, strong) UIButton *btnCancel;
    @property (nonatomic, strong) UIDatePicker *datePicker;
    @property (nonatomic, copy) MyBasicBlock selectBlock;
    
    + (YCDatePickerView *)datePickerViewWithMode:(UIDatePickerMode) datePickerMode bolck:(MyBasicBlock)block;
    
    
    @end

    3、YCDatePickerView类中.m文件代码如下:

    #define SCREEN_WIDTH      [[UIScreen mainScreen] bounds].size.width
    #define SCREEN_HEIGHT     [[UIScreen mainScreen] bounds].size.height
    
    #define kTopBarViewHeight       40
    #define kButton_Width           40
    #define kButton_Height          40
    #define kDatePicker_Height      256
    
    
    #import "YCDatePickerView.h"
    
    @implementation YCDatePickerView
    
    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
    
            UIView *topBarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, kTopBarViewHeight)];
            topBarView.backgroundColor = [UIColor orangeColor];
            [self addSubview:topBarView];
    
            _btnConfirm = [[UIButton alloc] initWithFrame:CGRectMake(self.frame.size.width-kButton_Width-10, 0, kButton_Width, kButton_Height)];
            [_btnConfirm addTarget:self action:@selector(btnConfirm:) forControlEvents:UIControlEventTouchUpInside];
            [_btnConfirm setTitle:@"确定" forState:UIControlStateNormal];
            [topBarView addSubview:_btnConfirm];
    
            _btnCancel = [[UIButton alloc] initWithFrame:CGRectMake(10, 0, kButton_Width, kButton_Height)];
            [_btnCancel addTarget:self action:@selector(btnCancel:) forControlEvents:UIControlEventTouchUpInside];
            [_btnCancel setTitle:@"取消" forState:UIControlStateNormal];
            [topBarView addSubview:_btnCancel];
    
            _datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(topBarView.frame), self.frame.size.width, self.frame.size.height-kTopBarViewHeight)];
            _datePicker.backgroundColor = [UIColor whiteColor];
            [self addSubview:_datePicker];
    
        }
        return self;
    }
    
    - (void)btnConfirm:(id)sender
    {
        if (self.selectBlock) {
            self.selectBlock(self.datePicker.date);
        }
    }
    
    - (void)btnCancel:(id)sender
    {
        if (self.selectBlock) {
            self.selectBlock(nil);
        }
    }
    
    + (YCDatePickerView *)datePickerViewWithMode:(UIDatePickerMode) datePickerMode bolck:(MyBasicBlock)block
    {
        YCDatePickerView *picker = [[YCDatePickerView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, kDatePicker_Height)];
        picker.datePicker.datePickerMode = datePickerMode;
        picker.selectBlock = block;
        return picker;
    }
    
    @end

    二、YCDatePickerView的使用

    1、在ViewController中导入头文件

    #import "YCDatePickerView.h"
    

    2、在ViewController.m中添加如下代码

    #define SCREEN_WIDTH      [[UIScreen mainScreen] bounds].size.width
    #define SCREEN_HEIGHT     [[UIScreen mainScreen] bounds].size.height
    
    
    #import "ViewController.h"
    #import "YCDatePickerView.h"
    
    @interface ViewController ()
    
    @property (retain, nonatomic) YCDatePickerView *datePicker;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
    
        UITextField *begin = [[UITextField alloc] initWithFrame:CGRectMake(10, 70, SCREEN_WIDTH-20, 30)];
        begin.placeholder = @"请输入开始时间";
        begin.borderStyle = UITextBorderStyleRoundedRect;
        [self.view addSubview:begin];
    
        __weak ViewController *weakself = self;
        begin.inputView = [YCDatePickerView datePickerViewWithMode:UIDatePickerModeDate
                                                             bolck:^(NSDate *result) {
                                                                 if (result) {
                                                                     begin.text = [weakself dateToString:result];
                                                                 }
                                                                 [begin resignFirstResponder];
                                                             }];
    
    
        UITextField *end = [[UITextField alloc] initWithFrame:CGRectMake(10, 120, SCREEN_WIDTH-20, 30)];
        end.placeholder = @"请输入结束时间";
        end.borderStyle = UITextBorderStyleRoundedRect;
        [self.view addSubview:end];
    
        end.inputView = [YCDatePickerView datePickerViewWithMode:UIDatePickerModeDate
                                                                          bolck:^(NSDate *result) {
                                                                              if (result) {
                                                                                  end.text = [weakself dateToString:result];
                                                                              }
                                                                              [end resignFirstResponder];
                                                                          }];
    
    }
    
    //日期转为字符串
    - (NSString *)dateToString:(NSDate *)date
    {
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSString *strDate = [dateFormatter stringFromDate:date];
        return strDate;
    }
    
    @end
    

    三、效果图

    这里写图片描述

    展开全文
  • 最近项目需求要写一个类IOS并且是月历样式的时间选择器,如图: 少废话,成品如下: 1. 思路 界面部分 &lt;LinearLayout &lt;LinearLayout/&gt; &lt;LinearLayout/&gt; &lt;...

    最近项目需求要写一个类IOS并且是月历样式的时间选择器,如图:
    需求

    少废话,成品如下:
    完成图

    1. 思路

    界面部分

    <LinearLayout
    	<LinearLayout/>
    	<LinearLayout/>
    	<LinearLayout/>
    	<RecyclerView/>
    />
    

    上面三个线性布局easy,下面的RecyclerView也很简单,只是,初学不太会用,花了点时间研究,主要是GridLayoutManager的几个参数、方法。

        <android.support.v7.widget.RecyclerView
            android:id="@+id/date_picker_recycler_view"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:background="@color/white"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    

    注意到需求上面左右是没有边距的,所以只是加了上下的padding。
    并且各个日期之间也是没有边距的所以item也很简单,
    height没有设置成wrap_content完全是因为太高了,不好看。
    android:stateListAnimator="@null"这句是为了取消Button点击产生的阴影,貌似API21以下还是有,待解决。

    <?xml version="1.0" encoding="utf-8"?>
    <Button
        android:id="@+id/btn_date_item_date"
        android:textColor="@color/monthForm_text"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:background="@color/white"
        android:layout_width="wrap_content"
        android:layout_height="35dp"
        android:stateListAnimator="@null"/>
    

    然后就是RecyclerView的设置了
    RecyclerView的骚操作可以说完全就是靠LayoutManager完成的。
    这里我们用到的是网页布局,直接贴代码。

            recyclerView.setLayoutManager(new GridLayoutManager(context,7));
    

    第一个参数context,第二个参数是列数,就完了。

    如果要给item设置间距

    如果要每个item之间有间距,我不知道高手是怎么实现的,我是通过给item设置margin实现的。

    因为如果item宽度是wrap_content,假如列数为7,recyclerView它会根据屏幕宽度把item的宽度设置为屏幕宽度的1/7,假如是定宽,那就排不了了,要么一行好多个要么一行几个,是吧,假如屏幕1000px,你一个item占了500px,它不能给你缩小吧。
    但是这样设置出来的效果是这样的| #1##2##3##4##5##6##7#|
    那,假如想各个item间隔均匀怎么办?就是|#1#2#3#4#5#6#7#|这样的效果
    还在修炼中,淘宝是这样的,据说开源了,有空去看看。

    逻辑部分

    思路

    1. 顶部时间
      这个简单,选中后将选中的时间显示上去即可;
      需求:需要recyclerView记住选中位置的年、月、日(selectedYear、selectedMonth、selectedDay)
    2. 菜单栏
      • 左箭头,上一月
        逻辑与右键头类似,参考右键头

      • 中间显示当前年、月
        这个也简单,左右箭头翻页时动态改变当前展示的年、月
        需求:需要recyclerView记住当前展示的年、月(requestYear、requestMonth)

      • 右键头,下一月
        这里通过Calendar类获取时间,通过roll方法设置需要显示的时间。
        类初始化时设置一个全局变量Calendar now = Calendar.getInstance();

        然后是点击右键头的代码(month+1是因为Calendar类获得月份范围是0-11)

        if(now.get(Calendar.MONTH)==11){
                    now.roll(Calendar.YEAR,1);
                }
                now.roll(Calendar.MONTH,1);
                int year = now.get(Calendar.YEAR);
                int month = now.get(Calendar.MONTH)+1;
                tv_year_month.setText(context.getString(R.string.date_picker_year_month,year,month));
                myAdapter.setRequestYear(year);
                myAdapter.setRequestMonth(month);
                initData();
                myAdapter.notifyDataSetChanged();
        
    3. 日历主体
      看起来难做起来容易,首先获得当前年、月、日;
      然后
      	now.set(Calendar.DATE,1);  //设置为当月第一天
      	firstWeekday = now.get(Calendar.DAY_OF_WEEK);  //获取第一天星期几,假如是2,就是星期一
          now.roll(Calendar.DATE,-1);            //这个月第一天倒退一天
          dayCount =now.get(Calendar.DATE);              //获取这个月总天数
          ```
      

    然后新建一个List<Integer>数组;
    先填入firstWeekday-1个-1,再依次填入1、2、…到dayCount
    然后recyclerView新建适配器,设置一列显示7个

    int thisDay = list.get(position);			//当前遍历的日期
    if(lthisDay>0){									//如果不是-1
    	item.setText(String.valueOf(thisDay));		//设置item显示值为这个日期,注意要转String
    	if(thisDay<CurrentDay&& requestMonth <= currentMonth && requestYear <= currentYear){		//如果这一天在今天之前,显示灰色
    	item.setTextColor(xxx);
    	}else{
    	item.setTextColor(xxx);显示黑色
    	item.setOnClickListener(xxx);设置点击事件
    }
    }
    
    展开全文
  • 有没有自定义过相片选择器?于是抽空查资料写一个简单demo放在这里。 内容: 1.写了一个“自定义图片选择器”。 2.获取到图片后为了剪切图片使用了工具“PureCamera”。 3.将编辑后的图片保存到自定义相册。 4.最后...
  • 一种:iOS 颜色选择器:HRColorPicker  https://github.com/hayashi311/Color-Picker-for-iOS/ 封装后对外属性: colorInfoView(色值显示)、 colorMapView(色板控制)、 brightnessSlider(颜色深度...
  • 主要完成车牌的选择和对应的处理下载地址
  • EFColorPicker 是一个纯 Swift 的轻量级 iOS 颜色选择器,受 MSColorPicker 启发。 English Introduction 链接https://github.com/EyreFree/EFColorPicker概述iOS 颜色选择器组件,它能够让用户选择自定义颜色,...
  • [IOS]UIPickerView选择时间段 Demo:http://download.csdn.net/detail/u012881779/8666805 功能:UIPickerView默认的横线显示隐藏  保持“结束时间”永远大于“开始时间” #import "SWYearTimeChoose.h" @...
  • 编制时间这一栏 就是选择年月,不是点击弹框选择时间 ,直接在这个面板上就可以选择时间,减少交互步骤,增强用户体验。整理了一个DEMO,希望可以帮助到大家。如果有其他问题欢迎大家加入我的qq群讨论交流:开发一群...
  • 日期选择器是很多应用所具备的,比如设置一些任务的开始和结束时间。为了方便用户的同时也为了界面的好看,很多都是采用日期选择器,我在网上看了一下。很多的日期选择器个人感觉不是很好看,但是修改起来也有点麻烦...
  • iOS登录界面和注册界面 一、登录和注册界面实现效果图: 二、实现原理 1、输入框的实现原理:把两个无边框的UITextField添加到一个作为背景的UIView上,然后重写UIView的 : -(void)drawRect:(CGRect)rect ...
  • iOS 实现图片颜色拾取器为什么需要颜色拾取iOS颜色拾取器的实现CGContext的使用自定义颜色采集板View颜色选择器的使用结束 为什么需要颜色拾取 有些APP开发业务中经常需要用到颜色拾取的功能,来完成对所需颜色的...
  • ios入门之界面基础

    2017-04-10 22:47:05
    在实现一个简单的ios 应用之前,我们首先来看ios开发中一些基本的概念。视图控制(View Controllers)视图控制是MVC(Modl-View-Controller)模式的逻辑部分。按照字面意思,这个控制能够控制某个视图。...
  • 这里要实现一个weex 的 一个自定义的三级联动组件,这里啰嗦一句为什么使用 vue 去自定义,一般使用weex的情况下,native也是支持原生扩展的,而且相对 android 和ios 各种第三方的组件选择很多不少还很成熟,为什么...
  • 今天给大家分享一个仿美团城市选择器效果的 JFCitySelector 城市选择器;几行代码即可将集三级城市选择、定位、搜索和字母索引于一身的城市选择器集成到你的项目中,极其简单轻便! —— 由 宇朋Look 分享 ...
  • 三行代码集成国家区号选择功能功能运行效果如图: 开源链接: https://github.com/qxuewei/XWCountryCode/blob/master/README.md使用方法:1.导入XWCountryCode类2.在需要选择国家代码的事件中 ...
  • 现在做安卓开发的都越来越倾向于ios的控件UI界面,无非就是因为ios的组件看起来比安卓的原生控件更漂亮,致使我们开发安卓的都要自己自定义控件来达到类似ios的控件。今天给大家自定义一个仿ios中的pickerview控件...
  • 效果图如下键盘中间的角标是图片,可根据自己的需要放置图片,点击位置被限制在白色区域内,打印的两个视图的tag值,第一个tag值为上一个被选中的view,第二个为当前点击的view,代码链接:...
1 2 3 4 5 ... 20
收藏数 44,688
精华内容 17,875
关键字:

ios 时间选择器 界面