//
// 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"是一个针对Android平台的自定义选择器组件,它允许开发者创建具有特定视觉效果和交互方式的选择视图,通常用于日期选择、时间选择或者选项列表等场景。下面将详细解析如何在Android中实现一个自定义...
在压缩包文件"CustomPickView"中,很可能包含了这个自定义PickView的源代码,包括Swift或Objective-C的实现文件、故事板文件或XIB文件,以及可能的资源文件如图片。通过查看这些文件,我们可以学习到具体的实现细节...
5. **高度可扩展性**:`BAPickView`的设计考虑到了扩展性,允许开发者根据需求添加更多的自定义行为,例如添加滑动动画、自定义过渡效果等。 6. **兼容性**:由于`BAPickView`基于Swift编写,因此它天然地支持Swift...
在自定义PickView时,我们可能需要考虑以下几点: 1. **样式定制**:可以通过修改背景颜色、字体大小、文字颜色等属性,使PickView与应用的整体风格保持一致。 2. **动画效果**:添加打开和关闭下拉列表的动画,提升...
标题“pickview自定义”表明我们要讨论的是如何根据需求对iOS中的PickerView进行定制,以实现特定的显示效果和功能。描述中提到的“实现类似ios pickview样式”,意味着我们要创建一个与原生iOS PickView外观相似但...
6. **自定义PickView**: - 除了基本的字符串显示外,还可以自定义Cell的显示内容,例如添加图片或颜色。 - 使用`- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:...
3. **标识选中状态**:在自定义PickerView的`cellForRow(at:)`方法中,你需要检查当前行是否已被选中,并据此调整Cell的外观(如添加选中标记或改变颜色)。 4. **监听选择变化**:实现`pickerView(_:didSelectRow:...
"ios-pickview横向.zip"这个压缩包提供的资源和代码示例,就是关于如何定义并实现一个横向滚动的选择器。 首先,我们需要了解iOS中的UIPickerView。它是苹果iOS SDK中内置的一个视图,用于呈现一组可滚动的行数据。...
使用组件化思想,我们可以封装一个自定义的`PickerView`组件,该组件接收数据源、当前选中值、回调函数等参数。组件内部负责渲染列表、处理用户交互,并通过props和事件来通信。 5. **样式设计**: "仿ios的...
本篇将详细讲解如何在Android中实现这样一个时间选择器,重点在于使用PickView进行自定义。 首先,我们来了解PickView的基本概念。PickView是一种自定义视图,它模仿了iOS中的UIPickerView,允许用户通过滚动选择...
5. **交互反馈**:一个良好的选择器不仅需要展示数据,还要给用户提供明确的交互反馈,如选中项的高亮显示,以及滚动时的平滑效果。 6. **性能优化**:对于大量数据的加载,`ZSJPickView`可能采用了某种形式的懒...
总的来说,创建一个Android版的iPhone滚轮选择器是一个涉及自定义View、事件处理、动画以及数据绑定等多个方面的综合实践。通过这样的项目,开发者不仅可以提升对Android UI控件的理解,还能锻炼解决问题和优化用户...
1. **自定义性**:允许开发者自定义显示的文本、颜色、字体等样式,适应不同的UI设计需求。 2. **滚动效果**:提供了平滑的滚动动画,使得用户操作更加流畅。 3. **事件监听**:支持设置滚动事件监听器,可以获取...
PickView是一款基于Android平台的高效、可定制化的日历控件,它利用了RecycleView这一先进的视图复用机制来实现高性能的滚动效果。RecycleView是Android SDK中的一个核心组件,它允许开发者在处理大量数据时提高用户...
本文将深入探讨滚轮式日期时间选择的实现原理、设计思路以及自定义扩展的可能性。 首先,我们来了解一下Android SDK提供的标准日期时间选择器,即`DatePicker`和`TimePicker`。这两个控件是Android系统自带的,它们...
还可以自定义选择器的背景,或者使用自定义视图替换默认的行。 4. **选择器组件(Components)**:如果`UIPickerView`有多个列,每个列称为一个组件。组件之间的滚动可以独立,也可以同步。 5. **动态加载数据**:...
`UIPickerView`具有良好的可定制性,允许开发者自定义行的高度、字体、颜色等视觉元素,以及数据源和代理方法,以实现联动效果。对于省市联动,可以通过数据结构(如字典或数组)来存储省市对应关系,并在用户选择...
下面我们将详细探讨这个库的使用方法、主要特性以及如何在项目中集成和自定义。 1. **集成与配置**: 要在项目中使用`Android-PickerView`,首先需要在项目的`build.gradle`文件中添加依赖。通过在`dependencies`...
在原生的UIKit框架中,UIPickerView需要设置数据源(datasource)和代理(delegate),这两个协议定义了显示的数据项数量、每个位置显示的值以及当选择改变时如何响应。封装的目的是为了简化这些操作,让开发者可以...
WMZDailog - 功能最多样式最多的弹窗,支持普通/微信底部/提示/加载...支持默认选中 支持所有列表cell样式的自定义 支持自定义弹窗 支持多弹窗优先级 调用枚举说明 typedef enum : NSUInteger{ DialogTypeNornal = 1,