首页 / IOS / ios之UIPickView
ios之UIPickView
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ios之UIPickView,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6033字,纯文字阅读大概需要9分钟。
内容图文
![ios之UIPickView](/upload/InfoBanner/zyjiaocheng/1307/38ed1e2c8d3d421fa8d1dce2c1ab7da7.jpg)
以下为控制器代码,主要用到的是UIPickerView
主要步骤:新建一个Single View Application
然后,如上图所示,拖进去一个UILabel Title设置为导航,再拖进去一个UILabel,用于显示效果,最后拖进去一个UIPickerView,设置好代理和dataSource,这应该都会。往后就是在代码中实现效果。代码注释很详细,看看都会懂,然后结合API,就可以举一反三了。自己也是慢慢学习的,然后自己练得。嘿嘿多多学习。加油!!!
#import <UIKit/UIKit.h>
@interface
sdsViewController :
UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>
//这是显示效果的label
@property
(retain, nonatomic) IBOutlet UILabel *textLabel;
//字体大小数组
@property(nonatomic,retain)
NSArray *fontArray;
//字体颜色数组
@property(nonatomic,retain)
NSArray *colorArray;
//字体大小数组
@property
(nonatomic, retain)NSArray *sizeArray;
@end
//
// sdsViewController.m
//
UIPickerView
//
// Created by Ibokan on 12-8-18.
//
Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//
#import
"sdsViewController.h"
@implementation sdsViewController
@synthesize textLabel;
@synthesize
fontArray;
@synthesize colorArray;
@synthesize sizeArray;
-
(void)didReceiveMemoryWarning
{
[super
didReceiveMemoryWarning];
// Release any cached data,
images, etc that aren‘t in use.
}
#pragma mark - View
lifecycle
-
(void)viewDidLoad
{
[super
viewDidLoad];
//设置所有字体
self.fontArray=[UIFont familyNames];
//设置字体大小数组
self.sizeArray=[NSArray
arrayWithObjects:@"12",@"16",@"20",@"24",@"30",@"35",@"40",nil];
//设置颜色数组
self.colorArray=[NSArray arrayWithObjects:[UIColor redColor],[UIColor
blueColor],[UIColor clearColor],[UIColor yellowColor],[UIColor brownColor],
[UIColor blackColor],[UIColor purpleColor],[UIColor orangeColor],[UIColor
darkGrayColor],[UIColor magentaColor],[UIColor darkTextColor],[UIColor
brownColor],[UIColor lightGrayColor],nil];
// Do any additional setup after loading the view, typically from a
nib.
}
- (void)viewDidUnload
{
//重新指向
[self setTextLabel:nil];
self.colorArray=nil;
self.fontArray=nil;
self.sizeArray=nil;
[super
viewDidUnload];
// Release any retained subviews of the
main view.
// e.g. self.myOutlet = nil;
}
-
(void)viewWillAppear:(BOOL)animated
{
[super
viewWillAppear:animated];
}
-
(void)viewDidAppear:(BOOL)animated
{
[super
viewDidAppear:animated];
}
-
(void)viewWillDisappear:(BOOL)animated
{
[super
viewWillDisappear:animated];
}
-
(void)viewDidDisappear:(BOOL)animated
{
[super
viewDidDisappear:animated];
}
-
(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported
orientations
return (interfaceOrientation !=
UIInterfaceOrientationPortraitUpsideDown);
}
- (void)dealloc
{
//销毁对象
[textLabel
release];
[fontArray release];
[colorArray release];
[sizeArray
release];
[super dealloc];
}
#pragma mark
-
#pragma
mark UIPickerViewDelegate
UIPickerViewDataSource
//以下是适配器部分,即数据源
//返回有几列
-(NSInteger)
numberOfComponentsInPickerView:(UIPickerView *)pickerView{
NSLog(@"调用%s ,%d",__FUNCTION__,__LINE__);
//返回有几列 ,注意
return
3;
}
//返回指定列的行数
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component{
NSLog(@"调用%s ,%d",__FUNCTION__,__LINE__);
if (component==0)
{
return [self.fontArray
count];
} else
if(component==1){
return
[self.colorArray count];
}
else
if(component==2){
return
[self.sizeArray count];
}
return 0;
}
//以下是代理部分,可以自定义视图
//返回指定列,行的高度,就是自定义行的高度
- (CGFloat)pickerView:(UIPickerView *)pickerView
rowHeightForComponent:(NSInteger)component{
NSLog(@"调用%s ,%d",__FUNCTION__,__LINE__);
return
40;
}
//返回指定列的宽度
-
(CGFloat) pickerView:(UIPickerView *)pickerView
widthForComponent:(NSInteger)component{
NSLog(@"调用%s
,%d",__FUNCTION__,__LINE__);
if (component==0)
{
//第0列,宽为180
return
180;
} else
if(component==1){
//第1列,宽为80
return
80;
}
else{
//第三列宽为60
return
60;
}
}
//
自定义指定列的每行的视图,即指定列的每行的视图行为一致
-
(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view{
NSLog(@"调用%s
,%d",__FUNCTION__,__LINE__);
//思想就是:先创建一个View以指定列的宽度,和所在列行的高度,为尺寸
//再建立一个label,在这个view上显示字体,字体颜色,字体大小,然后,把这个label添加到view中
//返回view,作为指定列的每行的视图
//取得指定列的宽度
CGFloat width=[self pickerView:pickerView
widthForComponent:component];
//取得指定列,行的高度
CGFloat height=[self pickerView:pickerView
rowHeightForComponent:component];
//定义一个视图
UIView *myView=[[UIView alloc]
init];
//指定视图frame
myView.frame=CGRectMake(0, 0, width,
height);
UILabel
*labelOnComponent=[[UILabel alloc] init];
labelOnComponent.frame=myView.frame;
labelOnComponent.tag=200;
if (component==0)
{
//如果是第0列
//以行为索引,取得字体
UIFont
*font=[self.fontArray
objectAtIndex:row];
//在label上显示改字体
labelOnComponent.text=[NSString
stringWithFormat:@"%@",font];
}
else
if(component==1){
//如果是第1列
//以说选择行为索引,取得颜色数组中的颜色,并把label的背景色设为该颜色
labelOnComponent.backgroundColor=[self.colorArray
objectAtIndex:row];
}
else
if(component==2){
//如果是第2列
//label
上显示的是相应字体
labelOnComponent.text=[self.sizeArray
objectAtIndex:row];
}
[myView
addSubview:labelOnComponent];
//内存管理,建立后释放
[labelOnComponent release];
[myView
autorelease];
return
myView;
}
- (void)pickerView:(UIPickerView
*)pickerView
didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{
//取得选择的是第0列的哪一行
int rowOfFontComponent = [pickerView
selectedRowInComponent:0];
//取得选择的是第1列的哪一行
int rowOfColorComponent = [pickerView
selectedRowInComponent:1];
//取得选择的是第2列的哪一行
int rowOfSizeComponent = [pickerView
selectedRowInComponent:2];
//取得所选列所选行的视图
UIView *ViewOfFontComponent = (UILabel
*)[pickerView viewForRow:rowOfFontComponent
forComponent:0];
UIView *ViewOfColorComponent =(UILabel *)
[pickerView viewForRow:rowOfColorComponent
forComponent:1];
UIView *ViewOfSizeComponent = (UILabel
*)[pickerView viewForRow:rowOfSizeComponent forComponent:2];
//取得取得所选行所选列上的视图的子视图
UILabel
*viewOnViewofFontComponent=(UILabel *)[ViewOfFontComponent
viewWithTag:200];
UILabel
*viewOnViewOfColorComponent=(UILabel *)[ViewOfColorComponent
viewWithTag:200];
UILabel
*viewOnViewOfSizeComponent=(UILabel *)[ViewOfSizeComponent
viewWithTag:200];
//最后将所选择的结果展现在label上,即字体样式,字体颜色,字体大小
self.textLabel.font=[UIFont
fontWithName:viewOnViewofFontComponent.text size:[viewOnViewOfSizeComponent.text
floatValue]];
self.textLabel.textColor=viewOnViewOfColorComponent.backgroundColor;
}
@end
效果图:
原文:http://www.cnblogs.com/yulang314/p/3550387.html
内容总结
以上是互联网集市为您收集整理的ios之UIPickView全部内容,希望文章能够帮你解决ios之UIPickView所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。