zoukankan      html  css  js  c++  java
  • 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];
    }

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

  • 相关阅读:
    adjacent_diffenerce
    数值算法速食食谱
    accumulate
    平面分割
    进制转换
    奖学金
    谁考了第k名
    奇数单增序列
    病人排序
    灯的开关状态
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879480.html
Copyright © 2011-2022 走看看