`

自定义pickview以及选中效果

 
阅读更多
//
//  ViewController.m
//  UIPickerViewBySelf
//
//  Created by MAC on 13-1-29.
//  Copyright (c) 2013年 MAC. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize fontlabel;
@synthesize pickView;
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.pickView.dataSource = self;
    self.pickView.delegate = self;
    
    fonts = [UIFont familyNames];
    fontSize = [NSArray arrayWithObjects:@"10",@"15",
                                          @"20",@"25",
                                          @"30",@"35",
                 @"40",@"45", nil];
    
    fontColor =[NSArray arrayWithObjects:
                [UIColor redColor],
                [UIColor blueColor],
                [UIColor blackColor],
                [UIColor yellowColor],
                [UIColor grayColor],
                [UIColor greenColor],
                [UIColor brownColor],
                [UIColor orangeColor],
                [UIColor purpleColor],
                [UIColor magentaColor],nil];
    
    for(int i= 0;i<3;i++)
    {
        int row = 0;
        if(i==0)
        {
            row = [fonts count]/2;
        }
        else if (i==1)
        {
            row = [fontColor count]/2;
        }
        else if (i==2)
        {
            row =[fontSize count]/2;
        }
[pickView selectRow:row inComponent:i animated:true];
    }


//    [fontColor retain];
    
	// Do any additional setup after loading the view, typically from a nib.
}
-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    UIView *view0,*view1,*view2;
    NSInteger row0,row1,row2;
    row0 = [pickView selectedRowInComponent:0];
    row1 = [pickView selectedRowInComponent:1];
    row2 = [pickView selectedRowInComponent:2];
    
    view0 = [pickView viewForRow:row0 forComponent:0];
    view1 = [pickView viewForRow:row1 forComponent:1];
    view2 = [pickView viewForRow:row2 forComponent:2];
    


    UILabel *label1,*label2,*label0;
    label0 =(UILabel *)[view0 viewWithTag:200];
    label1 =(UILabel *)[view1 viewWithTag:200];
    label2 =(UILabel *)[view2 viewWithTag:200];
    
    fontlabel.font = [UIFont fontWithName:label0.text size:[label2.text floatValue]];
    fontlabel.textColor = label1.backgroundColor;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark -
#pragma mark UIPICKVIEW CUSTOM FUNTION
//返回一共几列的值
-(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 3;
}
//返回每列具体多少行
-(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    if(component==0)
    {
        return [fonts count];}
    else if(component==1)
    {
        return [fontColor count];
        
    }
    else if(component ==2)
    {
        return [fontSize count];
    }
    return -1;
}
//返回三列各列宽度
-(CGFloat) pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
    if(component==0)
    {
        return 180.0f;}
    else if(component==1)
    {
        return 90.0f;
        
    }
    else if(component ==2)
    {
        return 50.0f;
    }
    return 0.0f;
}
//返回row高度
-(CGFloat) pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
    return 50.0f;
}
//可以理解为自定义的view内容
-(UIView *) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    CGFloat width = [self pickerView:pickView widthForComponent:component];
    CGFloat rowheight =[self pickerView:pickView rowHeightForComponent:(component)];
    
    UIView *myView = [[UIView alloc]init];
    myView.frame =CGRectMake(0.0f, 0.0f, width, rowheight);
    UILabel *txtlabel = [[UILabel alloc] init];
    txtlabel.tag=200;
    txtlabel.frame = myView.frame;
    
    [myView addSubview:txtlabel];
    if(component==0)
    {
        txtlabel.text = [fonts objectAtIndex:row];
    }
    else if(component==1)
    {
        txtlabel.backgroundColor =[fontColor objectAtIndex:row];
    }
    else if(component==2)
    {
        txtlabel.text =[fontSize objectAtIndex:row];
    }
    return myView;
}


@end

分享到:
评论

相关推荐

    自定义PickView.rar

    "自定义PickView"是一个针对Android平台的自定义选择器组件,它允许开发者创建具有特定视觉效果和交互方式的选择视图,通常用于日期选择、时间选择或者选项列表等场景。下面将详细解析如何在Android中实现一个自定义...

    IOS 自定义一个PickView

    在压缩包文件"CustomPickView"中,很可能包含了这个自定义PickView的源代码,包括Swift或Objective-C的实现文件、故事板文件或XIB文件,以及可能的资源文件如图片。通过查看这些文件,我们可以学习到具体的实现细节...

    swift-BAPickView最为精简的自定义pickView和日期选择器封装

    5. **高度可扩展性**:`BAPickView`的设计考虑到了扩展性,允许开发者根据需求添加更多的自定义行为,例如添加滑动动画、自定义过渡效果等。 6. **兼容性**:由于`BAPickView`基于Swift编写,因此它天然地支持Swift...

    选择城市PickView

    在自定义PickView时,我们可能需要考虑以下几点: 1. **样式定制**:可以通过修改背景颜色、字体大小、文字颜色等属性,使PickView与应用的整体风格保持一致。 2. **动画效果**:添加打开和关闭下拉列表的动画,提升...

    pickview自定义

    标题“pickview自定义”表明我们要讨论的是如何根据需求对iOS中的PickerView进行定制,以实现特定的显示效果和功能。描述中提到的“实现类似ios pickview样式”,意味着我们要创建一个与原生iOS PickView外观相似但...

    用pickview 显示排名

    6. **自定义PickView**: - 除了基本的字符串显示外,还可以自定义Cell的显示内容,例如添加图片或颜色。 - 使用`- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:...

    ios pickview 多选

    3. **标识选中状态**:在自定义PickerView的`cellForRow(at:)`方法中,你需要检查当前行是否已被选中,并据此调整Cell的外观(如添加选中标记或改变颜色)。 4. **监听选择变化**:实现`pickerView(_:didSelectRow:...

    ios-pickview横向.zip

    "ios-pickview横向.zip"这个压缩包提供的资源和代码示例,就是关于如何定义并实现一个横向滚动的选择器。 首先,我们需要了解iOS中的UIPickerView。它是苹果iOS SDK中内置的一个视图,用于呈现一组可滚动的行数据。...

    地方三级联动 仿ios的pickview

    使用组件化思想,我们可以封装一个自定义的`PickerView`组件,该组件接收数据源、当前选中值、回调函数等参数。组件内部负责渲染列表、处理用户交互,并通过props和事件来通信。 5. **样式设计**: "仿ios的...

    仿iphone时间选择器

    本篇将详细讲解如何在Android中实现这样一个时间选择器,重点在于使用PickView进行自定义。 首先,我们来了解PickView的基本概念。PickView是一种自定义视图,它模仿了iOS中的UIPickerView,允许用户通过滚动选择...

    ZSJPickView.zip

    5. **交互反馈**:一个良好的选择器不仅需要展示数据,还要给用户提供明确的交互反馈,如选中项的高亮显示,以及滚动时的平滑效果。 6. **性能优化**:对于大量数据的加载,`ZSJPickView`可能采用了某种形式的懒...

    Android仿iPhone滚轮选择器

    总的来说,创建一个Android版的iPhone滚轮选择器是一个涉及自定义View、事件处理、动画以及数据绑定等多个方面的综合实践。通过这样的项目,开发者不仅可以提升对Android UI控件的理解,还能锻炼解决问题和优化用户...

    三级联动&省市联动&多级联动

    1. **自定义性**:允许开发者自定义显示的文本、颜色、字体等样式,适应不同的UI设计需求。 2. **滚动效果**:提供了平滑的滚动动画,使得用户操作更加流畅。 3. **事件监听**:支持设置滚动事件监听器,可以获取...

    PickView:超级牛B的日历控件,基于RecycleView打造

    PickView是一款基于Android平台的高效、可定制化的日历控件,它利用了RecycleView这一先进的视图复用机制来实现高性能的滚动效果。RecycleView是Android SDK中的一个核心组件,它允许开发者在处理大量数据时提高用户...

    安卓滚轮式日期时间选择

    本文将深入探讨滚轮式日期时间选择的实现原理、设计思路以及自定义扩展的可能性。 首先,我们来了解一下Android SDK提供的标准日期时间选择器,即`DatePicker`和`TimePicker`。这两个控件是Android系统自带的,它们...

    UIPickerView DEMO

    还可以自定义选择器的背景,或者使用自定义视图替换默认的行。 4. **选择器组件(Components)**:如果`UIPickerView`有多个列,每个列称为一个组件。组件之间的滚动可以独立,也可以同步。 5. **动态加载数据**:...

    高仿苹果联动滑轮省市联动

    `UIPickerView`具有良好的可定制性,允许开发者自定义行的高度、字体、颜色等视觉元素,以及数据源和代理方法,以实现联动效果。对于省市联动,可以通过数据结构(如字典或数组)来存储省市对应关系,并在用户选择...

    Android中选择器PickerView(第三方控件)可选省市区

    下面我们将详细探讨这个库的使用方法、主要特性以及如何在项目中集成和自定义。 1. **集成与配置**: 要在项目中使用`Android-PickerView`,首先需要在项目的`build.gradle`文件中添加依赖。通过在`dependencies`...

    iOSpickView封装

    在原生的UIKit框架中,UIPickerView需要设置数据源(datasource)和代理(delegate),这两个协议定义了显示的数据项数量、每个位置显示的值以及当选择改变时如何响应。封装的目的是为了简化这些操作,让开发者可以...

    WMZDialog:功能最多样式最多的弹窗,支持普通微信底部日期地区日历选择编辑分享菜单自定义弹窗等,支持多种动画,链式编程调用(Pop-up windows with the most functions and styles, support normalWeChat bottomdateregioncalendarselecteditsharemenucustom pop-up windows, etc., support multiple animations, chain programming

    WMZDailog - 功能最多样式最多的弹窗,支持普通/微信底部/提示/加载...支持默认选中 支持所有列表cell样式的自定义 支持自定义弹窗 支持多弹窗优先级 调用枚举说明 typedef enum : NSUInteger{ DialogTypeNornal = 1,

Global site tag (gtag.js) - Google Analytics