@interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate,UITextViewDelegate>
@property(nonatomic,retain)NSArray *arr1;
@property(nonatomic,retain)NSArray *arr2;
@property(nonatomic,retain)UIDatePicker *myDatePicker;
@property(nonatomic,retain)UIButton *startBtn;
@property(nonatomic,assign)NSInteger leftSeconds;
@property(nonatomic,retain)NSTimer *timer;
@end
UIDatePicker的数据源是不可控只能是数字日期的,且没有代理和数据源方法,而UIPickerView的数据源可以随便给
1.选择视图(UIPickerView)
UIPickerView *pickView = [[UIPickerView alloc] initWithFrame:CGRectMake(60, 0, 255, 30)];
pickView.showsSelectionIndicator = NO;
self.arr1 = @[@"张三",@"李四",@"王五",@"逗比"];
self.arr2 = @[@"34",@"41",@"22"];
pickView.delegate = self;
pickView.dataSource = self;
[self.view addSubview:pickView];
[pickView release];
#pragma mark UIPickerView两个必须实现是数据源方法
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if (component == 0) {
return self.arr1.count;
}
if (component == 1) {
return self.arr2.count;
}
return 0;
}
#pragma mark UIPickerView可选代理方法
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if (component == 0) {
return self.arr1[row];
}
if (component == 1) {
return self.arr2[row];
}
return nil;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
//取出所选的行中的信息,然后打印,定义两个静态字符串用以保存上次选择的内容
static NSString *nameStr;
static NSString *ageStr;
//pickerView默认选中的是第一行,开始都第一行的值
nameStr = nameStr == nil ? self.arr1[0] : nameStr;
ageStr = ageStr == nil ? self.arr2[0] : ageStr;
if (component == 0) {
nameStr = [self.arr1 objectAtIndex:row];
}else{
ageStr = [self.arr2 objectAtIndex:row];
}
NSLog(@"姓名:%@ 年龄:%@",nameStr,ageStr);
}
2.日期选择器(UIDatePicker)
self.myDatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 100, 255, 30)];
//self.myDatePicker.datePickerMode = UIDatePickerModeDate;
self.myDatePicker.datePickerMode = UIDatePickerModeCountDownTimer;
//设置最小时间,超过最小日期也可以滑动,但是最后会停止在设置的最小日期点上
//NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//[formatter setDateFormat:@"yyyy-MM-dd"];
//NSDate *minDate = [formatter dateFromString:@"1990-1-1"];
//self.myDatePicker.minimumDate = minDate;
//设置myDatePicker上显示为昨天的这个时候
//[self.myDatePicker setDate:[NSDate dateWithTimeIntervalSinceNow:-24*3600] animated:NO];
[self.view addSubview:self.myDatePicker];
[self.myDatePicker release];
[_myDatePicker addTarget:self action:@selector(clicked:) forControlEvents:UIControlEventValueChanged];
//创建启动倒计时开关按钮
self.startBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[self.startBtn setTitle:@"倒计时开始" forState:UIControlStateNormal];
self.startBtn.frame = CGRectMake(100, 0, 175, 40);
[self.view addSubview:self.startBtn];
self.startBtn.backgroundColor = [UIColor cyanColor];
[_startBtn addTarget:self action:@selector(startAction:) forControlEvents:UIControlEventTouchUpInside];
- (void)clicked:(UIDatePicker *)dataePicker {
//获取用户通过UIDatePicker设置的日期和时间
NSDate *selected = [self.myDatePicker date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm +0800"];
//使用日期格式器格式化日期、时间
NSString *destDateString = [dateFormatter stringFromDate:selected];
NSString *message = [NSString stringWithFormat:@"您选择的日期和时间是:%@", destDateString];
//创建一个UIAlertView对象(警告框),并通过该警告框显示用户选择的日期、时间
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"日期和时间" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil] autorelease];
[alert show];
}
//如果将UIDatePicker的模式设置为CountDownTimer,该控件作为倒计时器使用,同时启动一个定时器定期更新该UIDatePicker的剩余时间。通过属性countDownDuration得到该倒计时器的剩余时间,也可通过修改该属性来改变该控件显示的剩余时间。
- (void)startAction:(UIButton *)startAction{
//获取该倒计时器的剩余时间
self.leftSeconds = self.myDatePicker.countDownDuration;
//禁用UIDatePicker控件和按钮
self.myDatePicker.enabled = NO;
[self.startBtn setEnabled:NO];
[self.startBtn setTitle:@"正在倒计时" forState:UIControlStateNormal];
self.timer = [NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(tickDown)userInfo:nil repeats:YES];
}
- (void)tickDown
{
// 将剩余时间减少60秒
self.leftSeconds -= 60;
// 修改UIDatePicker的剩余时间
self.myDatePicker.countDownDuration = self.leftSeconds;
if(self.leftSeconds <= 0)
{
[self.timer invalidate];
//启用UIDatePicker控件和按钮
self.myDatePicker.enabled = YES;
self.startBtn.enabled = YES;
[self.startBtn setTitle:@"开始倒计时" forState:UIControlStateNormal];
}
}
3.收索栏(UISearchBar)和网页视图(UIWebView)
#import "ViewController.h"
@interface ViewController ()<UISearchBarDelegate,UIWebViewDelegate>
@property(nonatomic,retain)UISearchBar *searchBar;
@property(nonatomic,retain)UIWebView *webView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.navigationBar.translucent = NO;
self.title = @"浏览器";
UISearchBar *sea = [[UISearchBar alloc] init];;
NSLog(@"%lf",sea.frame.size.height);
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 375, 44)];
[self.view addSubview:self.searchBar];
self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 46, 375, 603-44)];
[self.view addSubview:self.webView];
self.webView.delegate = self;
self.searchBar.placeholder = @"搜索";
self.searchBar.delegate = self;
self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
NSString *newStr = [NSString stringWithFormat:@"http://www.%@.com",self.searchBar.text];
NSURL *url = [NSURL URLWithString:newStr];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
}
- (void)dealloc {
[_webView release];
[_searchBar release];
[super dealloc];
}
@end
简单截图
4.UIBezierPath,UIProgressView
#import "MainViewController.h"
@interface MainViewController ()
@property(nonatomic, retain)UIProgressView *progressView;
@end
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.navigationBar.translucent = NO;
//开始图像绘图
UIGraphicsBeginImageContext(self.view.bounds.size);
//创建UIBezierPath,一个path是一笔画完
UIBezierPath *path = [UIBezierPath bezierPath];
//设置画笔颜色和宽度
[[UIColor cyanColor] setStroke];
[path setLineWidth:2];
//画个不倒翁由三部分组成:左右两边直线和下边圆弧
//画一条直线line,设定起始点和终点,都为同一点(187.5, 0)
[path moveToPoint:CGPointMake(187.5, 0)];
[path addLineToPoint:CGPointMake(87.5, 200)];
//将path绘制出来,直接将两点相连.
[path stroke];
//画一个圆arc,五个参数:1.圆心的坐标 2.半径 3.起始的弧度 4.结束的弧度 5.YES为顺时针,No为逆时针
[path addArcWithCenter:CGPointMake(187.5, 200) radius:100 startAngle:M_PI endAngle:0 clockwise:NO];
[path moveToPoint:CGPointMake(287.5, 200)];
[path addLineToPoint:CGPointMake(187.5, 0)];
[path stroke];
//在不倒翁里面画个半圆,并设置填充颜色
UIBezierPath *path2 = [UIBezierPath bezierPath];
[path2 addArcWithCenter:CGPointMake(187.5, 200) radius:50 startAngle:M_PI endAngle:0 clockwise:NO];
[[UIColor redColor] setFill];
[path2 fill];
[path2 stroke];
//从Context中获取图像,并显示在界面上
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
[self.view addSubview:imgView];
//有两种样式:UIProgressViewStyleBar和UIProgressViewStyleDefault,几乎无区别
self.progressView = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleDefault];
//进度条的高度是固定的,和slider一样
self.progressView.frame = CGRectMake(100, 80, 200, 10);
[self.view addSubview:self.progressView];
//设置未走过的进度条颜色
self.progressView.trackTintColor = [UIColor yellowColor];
//设置进度默认值,这个相当于百分比,范围在0~1之间,不可以设置最大最小值
//self.progressView.progress=0.3;
//设置进度条上进度的颜色
self.progressView.progressTintColor = [UIColor redColor];
//[self.progressView setProgress:0.2 animated:YES];
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(progressClick:) userInfo:nil repeats:YES];
}
- (void)progressClick:(NSTimer *)timer
{
self.progressView.progress += 0.2;
NSLog(@"%f",self.progressView.progress);
if (self.progressView.progress > 0.6) {
[timer invalidate];
}
}
@end
简单截图