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];
    }

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

  • 相关阅读:
    布局及视图(三)
    笔试中的编程题2
    布局及视图(四)
    SoftReference,WeakReference&WeakHashMap
    Android自用 监测网络是否可用
    Android自用 加载png图片时出错!
    Android访问权限大全
    笔试中的编程题3
    如何全面的把握一个系统的异常处理
    从程序的控制逻辑看线程的三种应用模式
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879481.html
Copyright © 2011-2022 走看看