UIDatePicker odd behavior when setting minuteInterval

来源:互联网 发布:2013免费刷q币软件 编辑:程序博客网 时间:2024/05/23 19:14

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

0 0
原创粉丝点击