44. UIPickerView ,UIDatePicker ,UISearchBar, UIWebView,UIBezierPath,UIProgressView

@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

简单截图
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值