工具类:自定义 pickerView

原创 2016年08月30日 22:28:23
@property (weak, nonatomic) IBOutlet UIButton *constellationBtn;
@property (nonatomic,strong) UIView *pickerMainView;
@property (nonatomic,strong)UIPickerView *pickerView;//自定义pickerview
@property (nonatomic,strong)NSArray *letter;//保存要展示的字母  
//创建 自定义 pickerView
- (void)setMyPickerView {
    //设置数据
    self.letter = @[@"白羊座",@"金牛座",@"双子座",@"巨蟹座",@"狮子座",@"处女座",@"天秤座",@"天蝎座",@"射手座",@"摩羯座",@"水瓶座",@"双鱼座"];
    // 初始化pickerView
    self.pickerMainView = [[UIView alloc]initWithFrame:CGRectMake(0, S_H, S_W, S_H)];
    [self.view addSubview:self.pickerMainView];
    //透明 button
    UIButton *backgroundBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, S_W, S_H - 190)];
    backgroundBtn.backgroundColor = [UIColor clearColor];
    [backgroundBtn addTarget:self action:@selector(clickCancelBtn:) forControlEvents:UIControlEventTouchUpInside];
    [self.pickerMainView addSubview:backgroundBtn];
    //下方view
    UIView *buttomView = [[UIView alloc]initWithFrame:CGRectMake(0, S_H - 190, S_W, 190)];
    buttomView.backgroundColor = [UIColor clearColor];
    [self.pickerMainView addSubview:buttomView];
    UIImageView *backGround = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, buttomView.width, buttomView.height)];
    backGround.image = [UIImage imageNamed:@"bg2"];
    [buttomView addSubview:backGround];
    //取消按钮
    UIButton *cancelBtn = [[UIButton alloc]initWithFrame:CGRectMake(16, 0, 40, 40)];
    [cancelBtn setTitle:@"取消" forState: UIWindowLevelNormal];
    [cancelBtn setTitleColor:[UIColor whiteColor] forState:UIWindowLevelNormal];
    [cancelBtn addTarget:self action:@selector(clickCancelBtn:) forControlEvents:UIControlEventTouchUpInside];
    [buttomView addSubview:cancelBtn];
    //确定按钮
    UIButton *sureBtn = [[UIButton alloc]initWithFrame:CGRectMake(buttomView.width - 56, 0, 40, 40)];
    [sureBtn setTitle:@"确定" forState: UIWindowLevelNormal];
    [sureBtn setTitleColor:[UIColor whiteColor] forState:UIWindowLevelNormal];
    [sureBtn addTarget:self action:@selector(clickSureBtn:) forControlEvents:UIControlEventTouchUpInside];
    [buttomView addSubview:sureBtn];
    //pickerView
    self.pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0, buttomView.height - 150, S_W, 150)];
    self.pickerView.backgroundColor = [UIColor whiteColor];
    self.pickerView.backgroundColor = [UIColor clearColor];
    [buttomView addSubview:self.pickerView];
    //指定数据源和委托
    self.pickerView.delegate = self;
    self.pickerView.dataSource = self;
    //跳到当前星座
    for (int i = 0; i < self.letter.count; i++) {
        NSString *tempStr = self.letter[i];
        if ([tempStr isEqualToString:self.constellationBtn.titleLabel.text]) {
            [self.pickerView selectRow:i inComponent:0 animated:YES];
            break;
        }
    }
}
//点击取消按钮
- (void)clickCancelBtn:(UIButton *)button {
    [UIView animateWithDuration:0.25 animations:^{
        self.pickerMainView.y = S_H;
    }completion:^(BOOL finished) {
        [self.pickerMainView removeFromSuperview];
        self.constellationBtn.enabled = YES;
    }];
}
//点击确定按钮
- (void)clickSureBtn:(UIButton *)button {
    [self.constellationBtn setTitle:self.constellationStr forState:UIControlStateNormal];
    [UIView animateWithDuration:0.25 animations:^{
        self.pickerMainView.y = S_H;
    }completion:^(BOOL finished) {
        [self.pickerMainView removeFromSuperview];
        self.constellationBtn.enabled = YES;
    }];
}

#pragma mark - UIPickerViewDataSource & UIPickerViewDelegate

//指定pickerview有几个表盘
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 1;
}
//指定每个表盘上有几行数据
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return self.letter.count;//根据数组的元素个数返回几行数据
}
//设置内容
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    return self.letter[row];
}
//设置字体颜色
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
    UILabel* pickerLabel = (UILabel*)view;
    if (!pickerLabel){
        pickerLabel = [[UILabel alloc] init];
        // Setup label properties - frame, font, colors etc
        //adjustsFontSizeToFitWidth property to YES
        //        pickerLabel.adjustsFontSizeToFitWidth = YES;
        //        [pickerLabel setBackgroundColor:[UIColor clearColor]];
        pickerLabel.textColor = [UIColor whiteColor];
        pickerLabel.textAlignment = NSTextAlignmentCenter;
        //        [pickerLabel setFont:[UIFont boldSystemFontOfSize:15]];
    }
    // Fill the label text here
    pickerLabel.text = self.letter[row];
    return pickerLabel;
}
//取出选中的那个
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    self.constellationStr = self.letter[row];
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS 自定义PickerView

前言自定义一个pickerView,解决如下问题: 1、添加“确定”和“取消”按钮; 2、增加向上弹出和向下消失动画; 3、选中某行后,触发一个事件;一、自定义PickerView的代码1、h文...
  • u010545480
  • u010545480
  • 2016年02月29日 14:53
  • 3364

iOS学习笔记01-自定义简单弹出pickerView

UIPickerView平常用的地方好像也不是很多,顶多就是一些需要选择的地方,这次项目需要这一个功能,我就单独写了一个简单的demo,效果图如下:新增主页面弹出view,在主页面添加的代码有个小问题...
  • sinat_31511831
  • sinat_31511831
  • 2017年01月12日 14:47
  • 436

Android 自定义View,实现滚动选择器PickerView

手机里设置闹钟需要选择时间,那个选择时间的控件就是滚动选择器,前几天用手机刷了MIUI,发现自带的那个时间选择器效果挺好看的,于是就自己仿写了一个,权当练手。先来看效果:            ...
  • wangbaochu
  • wangbaochu
  • 2015年10月27日 00:37
  • 877

如何自定义pickerView的高度和宽度!

我们都知道,iOS的pickerView的高度是一定的,常规手段无法进行更改!如果用平常的setFrame方法进行设置,有时候编译器会告诉你无效的设置! 那我们改如何进行修改!直接修改pickeVi...
  • mushaofeng1990
  • mushaofeng1990
  • 2015年04月14日 11:34
  • 2280

UIPickerView组件的使用之国旗联动——使用XIB自定义组件

具体步骤如下: 1 2 3 4 5 6 7 8 9 10 11
  • u013087513
  • u013087513
  • 2016年01月03日 23:17
  • 661

开发中仿IOS三级菜单,开源项目PickView实用自定义数据封装使用实例

compile 'com.contrarywind:Android-PickerView:3.2.7' androidStudio依赖,Eclipse可自行在github上搜索Android-Pi...
  • lizz821
  • lizz821
  • 2017年12月01日 12:26
  • 68

点击textField弹出自定义pickerView的完整解决方案

这几天做一个应用有这样一个需求,有一个'新建收货地址'的页面(tableView),其中有一个textField是输入城市的,要求是点击textField(输入框)后,下面弹出来一个自定义的带有too...
  • qfeung
  • qfeung
  • 2016年09月12日 17:15
  • 3141

android 自定义view 实例CityPickerView

经过几个APP的开发,发现基本上每个APP都有这么一个需求,那就是省市区三级地址的选择,一般都要求类似与iOS的滚轮实现,在github上面找了一些开源控件实现了一下,发现会出现一些问题,所以就打算自...
  • lj188266
  • lj188266
  • 2016年07月04日 10:30
  • 2362

(三十一)PickerView自定义视图

例如选择国家,左边是名称右边是国家,不应该使用两列,而是自定义PickerView的一列,可以通过xib来实现。 注意,虽然PickerView也是一列,但是数据源方法是@required,所以必须...
  • xyt8023y
  • xyt8023y
  • 2015年02月09日 14:44
  • 1018

iOS通过pickerView自定义简单的时间选择器

/** 初始化pickerView */ -(void)initPickerView { int x_hour = 50; int height_hour = 120; ...
  • cjh16102377
  • cjh16102377
  • 2015年08月11日 15:06
  • 3131
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:工具类:自定义 pickerView
举报原因:
原因补充:

(最多只允许输入30个字)