iOS开发小白学习体验-10

UIPickerView

选择框

UIPickerView *pick = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, 200)];/**< 初始化 */
    pick.delegate = self;/**< 设置代理 */
    pick.dataSource = self;/**< 设置数据源 */

    NSLog(@"%ld",pick.numberOfComponents);/**< 组数,只读 */
    [pick numberOfRowsInComponent:0];/**< 第X组有多少行 */
    [pick rowSizeForComponent:0];/**< 第X组的行的宽高 */
    [pick reloadAllComponents];/**< 重新加载所有的组 */
    [pick reloadComponent:0];/**< 重新加载第X组 */
    [pick selectRow:3 inComponent:1 animated:YES];/**< 指定某组某行滚动到中心 */
    [pick selectedRowInComponent:2];/**< 返回(第X组)选中的行,如果没有选择返回-1 */
    pick.showsSelectionIndicator = YES;/**< 显示选择框,默认为no */
    [self.view addSubview:pick];

代理方法

#pragma mark - pickView的数据源方法
/**< 设置pickView的组数 */
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return self.array.count;
}

/**< 设置每组的行数 */
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    NSArray *list = self.array[component];
    return list.count;
}
#pragma mark - pickView的代理方法
/**< 设置每组的宽度 */
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
    return self.view.frame.size.width/3;
}
/**< 设置每行的高度 */
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
    return 50;
}
/**< 显示每行的内容 */
- (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    NSArray *list = self.array[component];
    return list[row];
}

- (nullable NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component NS_AVAILABLE_IOS(6_0)
{
    return nil;
}
/**< 自定义pickerView的时候用到它,用view显示 */
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view
{
    /**
    可以借助xib设置,也可以纯代码编写
    */
    return view;
}
/**< 选中某一组某一行时操作 */
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    NSLog(@"%@",pickerView.textInputContextIdentifier);
}

选择框能实现挺多的功能,例如“点菜系统(普通的实现代理方法)”,例如“国旗选择(自定义pickerView,可以用XIB,也可以纯代码)”,例如“省市联动(plist建立的不同决定)”

关于时间的一些picker有另一个控件叫做UIDatePicker

UIDataPicker

datePicker的所有属性的用法

    // datePicker取出来的是本机的时间,不用设置宽高,因为宽高是固定的
    UIDatePicker *datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, 100)];

    [self.view addSubview:datePicker];
    /**
        UIDatePickerModeTime,          显示小时-分钟-秒-上下午
        UIDatePickerModeDate,          显示年月日
        UIDatePickerModeDateAndTime,   显示日期-小时-分钟-秒-上下午
        UIDatePickerModeCountDownTimer,显示时间
     */
    datePicker.datePickerMode = UIDatePickerModeDate;/**< 类型,默认为UIDatePickerModeDateAndTime类型 */
#pragma mark - locale
//    NSLocale *locle = datePicker.locale;/**< 设置DatePicker的地区,即设置DatePicker显示的语言 */
    NSLog(@"%@",[NSLocale availableLocaleIdentifiers]);/**< 跟踪所有可用的地区,取出想要的地区 */
    [datePicker setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"zh_Hans_CN"]];/**< 设置日期控件的地区 */
#pragma mark - calendar
    [datePicker setCalendar:[NSCalendar currentCalendar]];/**< 设置dataPicker的日历,默认为当天 */
#pragma mark - timeZone
    [datePicker setTimeZone:[NSTimeZone defaultTimeZone]];/**< 设置datePicker的时区 */
#pragma mark - date
    [datePicker setDate:[NSData data]];/**< 设置datepicker的日期 */
#pragma mark - minimumDate
    [datePicker setMinimumDate:[NSData data]];/**< 设置允许的最小日期 */
#pragma mark - maximumDate
    [datePicker setMaximumDate:[NSData data]];/**< 设置允许的最大日期 */
#pragma mark - countDownDuration
    /**< 设置dataPicker的倒计时 */
    // 1.设置日期选择的模
    [datePicker setDatePickerMode:UIDatePickerModeCountDownTimer];
    // 2.设置倒计时的时长.
    // Tips: 设置倒计时时长需要在确定模式之后指定(单位为秒)
    [datePicker setCountDownDuration:10*60];
#pragma mark - minuteInterval
    /**
     你可以将分钟表盘设置为以不同的时间间隔来显示分钟,前提是该间隔要能够让60整除。默认间隔是一分钟。如果要使用不同的间隔,需要改变 minuteInterval属性:
     */
    datePicker.minuteInterval = 15;/**< 设置分钟间隔 */

常用设置:

datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
// 设置区域为中国简体中文

datePicker.datePickerMode = UIDatePickerModeDate;
// 设置picker的显示模式:只显示日期

监听事件

[datePicker addTarget:self action:@selector(dateChange:)forControlEvents:UIControlEventValueChanged];

日期范围

你可以通过设置mininumDate 和 maxinumDate 属性,来指定使用的日期范围。如果用户试图滚动到超出这一范围的日期,表盘会回滚到最近的有效日期。两个方法都需要NSDate 对象作参数:
NSDate* minDate = [[NSDate alloc]initWithString:@"1900-01-01 00:00:00 -0500"]; 
NSDate* maxDate = [[NSDate alloc]initWithString:@"2099-01-01 00:00:00 -0500"];
datePicker.minimumDate = minDate; 
datePicker.maximumDate = maxDate; 

如果两个日期范围属性中任何一个未被设置,则默认行为将会允许用户选择过去或未来的任意日期。这在某些情况下很有用处,比如,当选择生日时,可以是过去的任意日期,但终止与当前日期。如果你希望设置默认显示的日期,可以使用date属性:

 datePicker.date = minDate;

此外,你还可以用 setDate 方法。如果选择了使用动画,则表盘会滚动到你指定的日期:

 [ datePicker setDate:maxDate animated:YES];
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页