1.进度条-UIProgressView
#import "ViewController.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIProgressView *progress1;
@property (weak, nonatomic) IBOutlet UIProgressView *progress3;
@property (weak, nonatomic) IBOutlet UIProgressView *progress2;
- (IBAction)tapped:(id)sender;@end@implementation ViewController{//定义一个计时器NSTimer* _timer;//定义一个变量,记录当前的进度值CGFloat _progVal;
}- (void)viewDidLoad {[super viewDidLoad];//创建可拉伸图片,指定对no.gif图片整体进行平铺UIImage* trackImage=[[UIImage imageNamed:@"no.png"]resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeTile];//创建可拉伸图片,指定对ok.gif图片整体进行平铺UIImage* progressImage=[[UIImage imageNamed:@"ok.png"]resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeTile];//自定义第三个进度条的外观self.progress3.trackImage=trackImage;self.progress3.progressImage=progressImage;}- (IBAction)tapped:(id)sender {_progVal=0;//启动计时器,控制每隔0.2秒调用一次changeprogeress方法_timer=[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(changeProgress) userInfo:nil repeats:YES];
}
-(void)changeProgress{//进度值增加0.01_progVal+=0.01;if (_progVal>=1.0) {[_timer invalidate];}else{//同时改变三个进度条的进度值[self.progress1 setProgress:_progVal animated:YES];[self.progress2 setProgress:_progVal animated:YES];[self.progress3 setProgress:_progVal animated:YES];}
}
@end

2.进度条-UIActivitydicatorView
#import "ViewController.h"@interface ViewController ()
//四个indicator控件绑定到一个属性集合上
@property (strong, nonatomic) IBOutletCollection(UIActivityIndicatorView) NSArray *progress;- (IBAction)start:(id)sender;
- (IBAction)stop:(id)sender;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.self.view.backgroundColor=[UIColor grayColor];
}- (IBAction)stop:(id)sender {}- (IBAction)start:(id)sender {for (int i=0; i<self.progress.count; i++) {[self.progress[i] startAnimating];}
}
@end

3.拖动条-UISlider

#import "ViewController.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *myimage;
- (IBAction)changed:(UISlider *)sender;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];//创建可拉伸图片UIImage* oneImage=[[UIImage imageNamed:@"11.jpeg"]resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeTile];self.myimage.image=oneImage;
}- (IBAction)changed:(UISlider *)sender {//这里参数是UISlider类[self.myimage setAlpha:sender.value];
}
@end

4.警告框–UIAlertView(在IOS9中被废弃,不学)
5.警告框–UIActionSheet(在IOS9中被废弃,不学)
6.日期选择器–UIDatePicker
#import "ViewController.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIDatePicker *myDate;
- (IBAction)tapped:(id)sender;
@property (weak, nonatomic) IBOutlet UILabel *myTimeLabel;
@end@implementation ViewController
- (void)viewDidLoad {[super viewDidLoad];
}
- (IBAction)tapped:(id)sender {//获取用户通过UIDatePicker设置的日期和时间NSDate* selected=[self.myDate date];//创建一个日期格式器NSDateFormatter* dateFormatter=[[NSDateFormatter alloc]init];//为日期格式器设置格式字符串[dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm +0800"];//使用日期格式化器格式化日期时间NSString *destDateString=[dateFormatter stringFromDate:selected];//输出的文字NSString* message=[NSString stringWithFormat:@"您选择的时间是:%@",destDateString ];self.myTimeLabel.text=message;
}
@end

7.日期选择器–UIDatePicker–倒计时器
#import "ViewController.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *showInfo;
@property (weak, nonatomic) IBOutlet UIDatePicker *countDown;
@property (weak, nonatomic) IBOutlet UIButton *startBn;- (IBAction)tapped:(id)sender;@end@implementation ViewController
{NSTimer* _timer;NSInteger _leftSeconds;
}- (void)viewDidLoad {[super viewDidLoad];
}- (IBAction)tapped:(id)sender {//获取该倒计时器的剩余时间_leftSeconds=self.countDown.countDownDuration;//禁用UIDatePicker控件和按钮self.countDown.enabled=NO;[sender setEnabled:NO];//初始化一个字符串NSString* message=[NSString stringWithFormat:@"开始倒计时?还剩下%ld秒",_leftSeconds ];self.showInfo.text=message;//启动定时器,控制间隔每隔60秒执行一次tickDown方法_timer=[NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(tickeDown) userInfo:nil repeats:YES];}
-(void)tickeDown{//剩余时间减少60秒_leftSeconds-=5;//修改倒计时器的剩余时间self.countDown.countDownDuration=_leftSeconds;NSString* message=[NSString stringWithFormat:@"开始倒计时?还剩下%ld秒",_leftSeconds ];self.showInfo.text=message;if (_leftSeconds<=0) {//取消定时器[_timer invalidate];//启用倒计时控件和开始按钮控件self.countDown.enabled=YES;self.startBn.enabled=YES;}
}
@end

8.选择器–UIPickerView–单列选择器
#import "ViewController.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIPickerView *picker;
@property (weak, nonatomic) IBOutlet UILabel *showInfo;@end@implementation ViewController{NSArray* _books;
}- (void)viewDidLoad {[super viewDidLoad];// 创建并初始化nsarray对象_books=@[@"疯狂android讲义",@"疯狂IOS讲义",@"疯狂swift讲义",@"疯狂XML讲义",@"疯狂java讲义"];//为UIPickerView设置DataSource和delegate//self.showInfo.text=_books[1];self.picker.dataSource = self;self.picker.delegate = self;
}//UIPickerViewDataSource中定义的方法,该方法的返回值决定该控件包含多少列
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{return 1;//表明该控件只包含一列
}
//UIPickerViewDataSource中定义的方法,该方法的返回值决定该控件指定列包含多少个列表项
-(NSInteger)pickerView:(UIPickerView*)pickerView  numberOfRowsInComponent:(NSInteger)component{//由于控件只有一列,不需要管component的值//返回books数组的大小return _books.count;//表明该控件只包含一列
}//UIPickerViewDelegate中定义的方法,该方法返回的nsstring将作为UIPickerView中指定列和列表项标题文本
-(NSString*)pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent  :(NSInteger)component{//由于控件只有一列,不需要管component的值//根据row参数返回books数组中的元素,row参数代表列表项的编号return _books[row];
}//选中DataSource第几列、第几项时激发的方法
-(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{self.showInfo.text=_books[row];
}@end

9.选择器–UIPickerView–多列选择器
#import "ViewController.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIPickerView *picker;
@property (weak, nonatomic) IBOutlet UILabel *showInfo;
@property (weak, nonatomic) IBOutlet UILabel *mylist;@end@implementation ViewController{NSArray* _books;NSArray* _authors;
}- (void)viewDidLoad {[super viewDidLoad];// 创建并初始化nsarray对象_authors=@[@"泰戈尔",@"纪伯伦",@"托尔斯泰"];_books=@[@"疯狂android讲义",@"疯狂IOS讲义",@"疯狂swift讲义",@"疯狂XML讲义",@"疯狂java讲义"];//为UIPickerView设置DataSource和delegate//self.showInfo.text=_books[1];self.picker.dataSource = self;self.picker.delegate = self;
}//UIPickerViewDataSource中定义的方法,该方法的返回值决定该控件包含多少列
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{return 2;//表明该控件只包含一列
}
//UIPickerViewDataSource中定义的方法,该方法的返回值决定该控件指定列包含多少个列表项
-(NSInteger)pickerView:(UIPickerView*)pickerView  numberOfRowsInComponent:(NSInteger)component{//按照列数返回各个数组中的元素个数@try {switch (component) {case 0:return _authors.count;break;case 1:return _books.count;break;default:break;}} @catch (NSException *exception) {NSLog(@"%@",exception);}}//UIPickerViewDelegate中定义的方法,该方法返回的nsstring将作为UIPickerView中指定列和列表项标题文本
-(NSString*)pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent  :(NSInteger)component{//按照列数返回各个数组中的元素值@try {switch (component) {case 0:return _authors[row];break;case 1:return _books[row];break;default:break;}} @catch (NSException *exception) {NSLog(@"%@",exception);}
}//选中DataSource第几列、第几项时激发的方法
-(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{if (component==0) {self.mylist.text=@"作者";}else{self.mylist.text=@"图书";}self.showInfo.text=_books[row];
}@end

10.选择器–UIPickerView–相互依赖的多列选择器
#import "ViewController.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIPickerView *picker;
@property (weak, nonatomic) IBOutlet UILabel *showInfo;
@property (weak, nonatomic) IBOutlet UILabel *mylist;@end@implementation ViewController{NSDictionary* _books;NSArray* _authors;//保存当前选中的作者NSString* _selectAuthor;
}- (void)viewDidLoad {[super viewDidLoad];// 创建并初始化nsarray对象_books = @{@"泰戈尔":@[@"飞鸟集",@"园丁集"],@"冯梦龙":@[@"醒世恒言",@"喻世明言",@"警世通言"],@"李刚":@[@"疯狂android讲义",@"疯狂IOS讲义",@"疯狂JAVA讲义",@"疯狂XML讲义"]};//使用_authors保存_books所有key组成的NSArray排序后的结果_authors=[[_books allKeys] sortedArrayUsingSelector:@selector(compare:)];//设置默认选中的作者的_authors中的第一个元素_selectAuthor=_authors[0];//为UIPickerView设置DataSource和delegateself.picker.dataSource = self;self.picker.delegate = self;
}//UIPickerViewDataSource中定义的方法,该方法的返回值决定该控件包含多少列
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{return 2;//表明该控件只包含2列
}
//UIPickerViewDataSource中定义的方法,该方法的返回值决定该控件指定列包含多少个列表项
-(NSInteger)pickerView:(UIPickerView*)pickerView  numberOfRowsInComponent:(NSInteger)component{//按照列数返回各个数组中的元素个数if (component==0) {return _authors.count;}//如果有其他列返回——books中_selectedAuthor对应的nsarray中元素的个数return [_books[_selectAuthor] count];}//UIPickerViewDelegate中定义的方法,该方法返回的nsstring将作为UIPickerView中指定列和列表项标题文本
-(NSString*)pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent  :(NSInteger)component{//按照列数返回各个数组中的元素值if (component==0) {//第一列由_authors集合元素决定return _authors[row];}//如果是其他列返回选中处的元素return [_books[_selectAuthor] objectAtIndex:row];
}//选中DataSource第几列、第几项时激发的方法
-(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{if (component==0) {//改变被选中的作者_selectAuthor=_authors[row];//控制重写加载第二个列表,根据选中的走着来加载第二个列表[self.picker reloadComponent:1];}NSArray* temp= component==0?_authors:_books[_selectAuthor];NSString* tip=component==0?@"作者":@"图书";//显示self.mylist.text=tip;self.showInfo.text=temp[row];
}@end

11.选择器–UIPickerView–自定义选择器视图
#import "ViewController.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIPickerView *picker;
@property (weak, nonatomic) IBOutlet UIImageView *myImage;
@property (weak, nonatomic) IBOutlet UIButton *startBn;- (IBAction)tapped:(id)sender;@end@implementation ViewController
{UIImage* _lostImage;UIImage* _winImage;//保存系统中所有图片的集合NSArray* _images;//定义两个声音//AVAudioPlayer * winSound;//AVAudioPlayer * crunchSound;}- (void)viewDidLoad {[super viewDidLoad];_lostImage=[UIImage imageNamed:@"lost.png"];_winImage=[UIImage imageNamed:@"win.png"];//依次加载6张图片,生成对应的UIImage对象UIImage* img11=[UIImage imageNamed:@"11.png"];UIImage* img12=[UIImage imageNamed:@"12.png"];UIImage* img13=[UIImage imageNamed:@"13.png"];UIImage* img14=[UIImage imageNamed:@"14.png"];UIImage* img15=[UIImage imageNamed:@"15.png"];UIImage* img16=[UIImage imageNamed:@"16.png"];//初始化——images集合,将前面的6张图片封装成_image集合_images=@[img11,img12,img13,img14,img15,img16];//禁用用户交互self.picker.userInteractionEnabled=NO;//设置数据源和委托self.picker.dataSource=self;self.picker.delegate=self;
}//重写dataSource中的方法
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{return 5;//控件包含5列
}
//该方法返回值决定该控件指定列包含多少个列表项
-(NSInteger)pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component{return _images.count;
}#define kImageTag 1
//返回delegete的方法,返回指定列和列表项的UI控件
-(UIView*)pickerView:(UIPickerView*)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{if (view.tag!=kImageTag) {view=[[UIImageView alloc]initWithImage:_images[row]];//为该view设置tag属性view.tag=kImageTag;//设置不允许交互view.userInteractionEnabled=NO;}return view;
}//返回列表项的高度
-(CGFloat)pickerView:(UIPickerView*)pickerView rowHeightForComponent:(NSInteger)component{return 40;
}
//返回列表项的宽度
-(CGFloat)pickerView:(UIPickerView*)pickerView widthForComponent:(NSInteger)component{return 40;
}
- (IBAction)tapped:(id)sender {//禁用按钮self.startBn.enabled=NO;self.myImage.image=nil;//清空见面上myImage控件的图片//定义一个nsmutableDictionary来记录每个随机数出现的次数NSMutableDictionary* result=[[NSMutableDictionary alloc]initWithCapacity:6];for (int i=0; i<5; i++) {//生成0-_images.count之间的 一个随机数int selectedVal=arc4random()%_images.count;[self.picker selectRow:selectedVal inComponent:i  animated:YES];if ([result objectForKey:[NSNumber numberWithInt:selectedVal]]) {//获取result中概随机数出现的次数NSInteger newCount=[result [[NSNumber numberWithInt:selectedVal]] intValue];//将获取到的随机数+1[result setObject:[NSNumber numberWithLong:(newCount+1)] forKey:[NSNumber numberWithInt:selectedVal]];}else{//s使用reslut记录随机数的出现次数为1[result setObject:[NSNumber numberWithInt:1] forKey:[NSNumber numberWithInt:selectedVal]];}//使用result记录随机数的最大出现次数NSUInteger maxOccurs=1;for (NSNumber* num in [result allKeys]){//只要热河随机数的出现次数大于maxOccursif ([[result objectForKey:num] integerValue]>maxOccurs) {//使用maxOccurs保存概随机数出现的次数maxOccurs=[[result objectForKey:num]integerValue];}}//如果某个随机数出现的次数大于或等于3,即界面中处出现了3个相同的图片if (maxOccurs>=3) {//如果赢了延迟0.5秒执行showWin方法,显示结果[self performSelector:@selector(showWin) withObject:nil afterDelay:0.5];}else{//如果输了延迟0.5秒执行showlsot方法,显示结果[self performSelector:@selector(showlost) withObject:nil afterDelay:0.5];}}
}-(void)showWin{self.myImage.image=_winImage;self.startBn.enabled=YES;
}
-(void)showlost{self.myImage.image=_lostImage;self.startBn.enabled=YES;
}
@end


OC学习笔记之011IOS应用开发入门--控件2进度条、拖动条、警告框、日期选择器、选择器相关推荐

  1. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  2. LabView学习笔记(三):基本控件

    Labview学习笔记: LabView学习笔记(一):基础介绍 LabView学习笔记(二):滤波器实验 LabView学习笔记(三):基本控件 LabView学习笔记(四):动态数据类型 LabV ...

  3. 学习笔记:VB.net动态添加控件数组并传递事件

    学习笔记:VB.net动态添加控件数组并传递事件 控件数组和事件 "中间人" 动态添加控件 控件数组和事件 新建一个用户窗体,在定义控件数组时,不能用Withevnets来定义数组 ...

  4. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第三章:简单控件

    第 3 章 简单控件 本章介绍了App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图.容纳视图的常用布局.响应点击的按钮控件.显示图片的图像视图等.然后结合本章所学的知识,演示了一个实战项 ...

  5. 学习笔记 | Android Studio安卓开发入门经验总结 干货

    前言 最近完成了移动编程课程的学习,加上其它安卓开发项目的经历,感觉收获颇为丰富.故在此总结整理安卓开发中比较常见的一些问题,技巧和指南. 0.目录 文章目录 前言 0.目录 1.开发环境 2. 项目 ...

  6. Coolite Toolkit学习笔记九:表单布局控件FormLayout与FromPanel

    FormLayout在我们平时开发中使用频率非常高,使用它可快速.方便的实现表单界面布局,以及使用一些其他控件自身的特性组合起来实现丰富强大的UI界面.下面通过一个简单示例来体验FormLayout的 ...

  7. Qt学习笔记:自定义窗体的移动+控件图标

    在这里首先感谢刘大师的作品:Qt编写通用主界面导航(开源) 贴上演示: 本博客主要是研究了刘大师的作品然后自己总结,做点笔记..不喜勿喷~~~ 废话不多说,先贴出代码解析一下: AppInit::In ...

  8. VB.NET学习笔记:自定义控件之扩展TEXTBOX控件——水印文字提示效果

    测试环境:windows 7和Microsoft Visual Studio 2017 看到一些优秀软件里的TEXTBOX文本框都有水印文字提示应该输入什么样的信息,获取光标后提示文字消失,光标离开后 ...

  9. cad二次开发 java_基于.NET的CAD二次开发学习笔记一:CAD开发入门

    1.AutoCAD .NET API由不同的DLL文件组成,它们提供用于访问图形文件或AutoCAD应用程序的包含丰富的类.结构.方法和事件.每一个DLL文件都定义不同的使用基于功能的库组织组件的命名 ...

  10. WPF and Silverlight 学习笔记(十):WPF控件模型

    WPF对控件其类型的继承方式如下 (其中绿色表示的类是抽象类,蓝色表示的类是非抽象类) 控件内容模型      System.Windows.Controls.Control类:表示 用户界面 (UI ...

最新文章

  1. Silverlight DataGrid超出列表高度时自动滚屏
  2. mysql空表_MySQL中两种快速创建空表的方式
  3. window7自带的分区
  4. kafka是什么_终于知道Kafka为什么这么快了!
  5. react 事件处理_在React中处理事件
  6. gdb调试的基本使用
  7. Linux编程简介——VI
  8. 怎样在数组末尾添加数据_如何利用C++实现可变长的数组?
  9. 分布式通信协议RPC协议简介
  10. 【多线程】CAS乐观锁
  11. Qt创建Qt Designer自定义控件及使用
  12. c#录音和放音,超简单!不用DirectX
  13. LSD_SLAM编译运行
  14. 2022-2028年全球与中国压电薄膜传感器行业发展趋势及投资战略分析
  15. 悬挂式Notification 停留几秒后自动消失 且保留状态栏的通知(自定义消息)
  16. 论文翻译之Enriched Feature Guided Refinement Network for Object Detection
  17. 大厂程序员教你如何写简历(附简历模板)//简历、秋招、简历模板。经验分享、资源分享
  18. window.location.href跳转到的页面,获取值
  19. 列表推导式写99乘法表
  20. 知云文献翻译打不开_科研星火 | 基础技能——翻译篇

热门文章

  1. 【论文翻译】 Residual Networks Behave Like Ensembles of Relatively Shallow Networks
  2. 数据铁笼-郑州Android项目ViewPager刷新问题
  3. LeetCode148经典题目记录(链表排序:快排+递归归并+迭代归并)
  4. 计算机组成原理与体系结构——随机存储器和只读存储器
  5. 设置Win7自动关机的两种方法
  6. h5调用手机相册摄像头以及文件夹
  7. c#动态加载dll并调用dll中类的方法
  8. 并行编程--MPI开发入门
  9. 科普硬解,软解,gpu,dsp等等的关系
  10. 2019开发者调查报告出炉