• UIDatePicker odd behavior when setting minuteInterval


    http://stackoverflow.com/questions/6948297/uidatepicker-odd-behavior-when-setting-minuteinterval

    Here's yet another approach, with an Objective-C category!

    I took the spirit of @zurbergram's rounding behavior (up/down to closest) and @mmorris's overall answer and came up with this category:

    #import <UIKit/UIKit.h>
    
    @interface UIDatePicker (SetDateRounded)
    
    -(void)setMinimumDateRoundedByMinuteInterval:(NSDate *)minimumDate;
    -(void)setDateRoundedByMinuteInterval:(NSDate *)date animated:(BOOL)animatedYesNo;
    
    @end
    
    @implementation UIDatePicker (SetDateRounded)
    
    -(void)setDateRoundedByMinuteInterval:(NSDate *)date animated:(BOOL)animatedYesNo
    {
        NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSMinuteCalendarUnit fromDate:date];
        NSInteger minutes = [dateComponents minute];
        NSInteger minutesRounded = roundf((float)minutes / (float)[self minuteInterval]) * self.minuteInterval;
        NSDate *roundedDate = [[NSDate alloc] initWithTimeInterval:60.0 * (minutesRounded - minutes) sinceDate:date];
        [self setDate:roundedDate animated:animatedYesNo];
    }
    
    -(void)setMinimumDateRoundedByMinuteInterval:(NSDate *)date
    {
        NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSMinuteCalendarUnit fromDate:date];
        NSInteger minutes = [dateComponents minute];
        NSInteger minutesRounded = roundf((float)minutes / (float)[self minuteInterval]) * self.minuteInterval;
        NSDate *roundedDate = [[NSDate alloc] initWithTimeInterval:60.0 * (minutesRounded - minutes) sinceDate:date];
        [self setMinimumDate:roundedDate];
    }
    
    @end

    Then in your implementation, you can do something like this:

    #import "UIDatePicker+SetDateRounded.h"
    
    ...
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        _datePicker.minuteInterval = 15;
    
        [_datePicker setMinimumDateRoundedByMinuteInterval:[NSDate date]];
        [_datePicker setDateRoundedByMinuteInterval:[NSDate date] animated:YES];
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Java四种内部类
    Java多态详解
    为啥java要使用 set ()和get()方法---封装
    Python---django轻量级框架
    java 读取数据库数据转化输出XML输出在jsp页面
    操作系统专栏
    learn more ,study less(三):超越整体性学习
    learn more ,study less(二):整体性学习技术(下)
    learn more ,study less(二):整体性学习技术(上)
    Spring博客专栏
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879481.html
Copyright © 2020-2023  润新知