IOS开发之UI中的其他小控件

本文详细介绍了iOS开发中常用的UI控件,包括开关(UISwitch)、滑块(UISlider)、进度条(UIProgressView)等,并展示了如何通过代码实现这些控件的基本功能及事件处理。


#import "AppDelegate.h"


@interface AppDelegate () <UIActionSheetDelegate,UIAlertViewDelegate,

UITextViewDelegate>{

    UILabel *_showLabel;

}


@end


@implementation AppDelegate



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.

     _window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

    

    [_window setBackgroundColor:[UIColor whiteColor]];

    

    _showLabel = [[UILabel alloc]initWithFrame:

                  CGRectMake(100, 200, 100, 40)];

    [_window addSubview:_showLabel];

    

    

    //======================================================

    //1.UISwitch

    [self createSwitch];

    

    

    //2.滑块

    [self createSlider];

    

    //3.进度条

    [self CreateProgressView];

    

    

    //4.步数器

    [self createStepper];

    

    //5.活动指示框

    [self createActivity];

    

    //6.多段选择器

    [self createSegmentControl];

    

    //7.表单视图

    // [self createActionSheet];

    

    

    //8.警告框

    //[self createAlertView];

    

    

    //9.文本输入框

    [self createUITextView];

    

    [_window makeKeyAndVisible];

  

    return YES;

   

}


#pragma mark -创建文本输入视图

- (void)createUITextView{

    

    //UITextView继承自UIScrollView

    

    //UITextViewUITextField的功能基本一致

    //UITextField的属性和方法和UITextView都有类似的属性和方法

    //区别1:UITextField只能一行显示文字,UITextView可以多行显示

    //并且可以滚动,

    //区别2:UITextField有占位文字和密文显示功能,但是UITextView没有

    

    

    //1.创建文本输入视图的对象

    UITextView *textView = [[UITextView alloc]

                            initWithFrame:CGRectMake(100, 350, 200, 100)];

    

    //2.显示在界面上

    [_window addSubview:textView];


    //3.设置背景颜色

    textView.backgroundColor = [UIColor lightGrayColor];

    

    //4.设置文字

    textView.text = @"这是一个textView";

    

    //5.设置是否可以编辑(默认是yes)

    //NO就是纯展示文字的控件

    //textView.editable = YES;


    //6.关闭选中文字的功能;

    //textView.selectable = NO;

    

    //7.设置键盘类型textField也有这个属性;

    [textView setKeyboardType:UIKeyboardTypeTwitter];

    

    //8.设置return按钮的样式

    [textView setReturnKeyType:UIReturnKeyDefault];

    

    //9.设置代理

    textView.delegate = self;

    

}

#pragma mark -UITextView协议方法


//使用键盘输入文字的时候实时调用这个方法;

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:

(NSRange)range replacementText:(NSString *)text{

    

    NSLog(@"%@",text);

    if ([text isEqualToString:@"\n"]) {

        [textView resignFirstResponder];

    }

    

    return YES;

    

}


//已经开始编辑

- (void)textViewDidBeginEditing:(UITextView *)textView{

    

    NSLog(@"已经开始编辑");

}

//已经结束编辑

- (void)textViewDidEndEditing:(UITextView *)textView{

    

    NSLog(@"已经结束编辑");

    

}


#pragma mark -创建警告框

- (void)createAlertView{

    

    //1.创建警告对象

    UIAlertView *alert = [[UIAlertView alloc]

    initWithTitle:@"警告" message:@"没有联网,请联网"

    delegate:self cancelButtonTitle:@"取消"

     otherButtonTitles:@"确定", nil];

    

    

    

    //2.显示在界面上

    [alert show];

    

    //3.

    

    

    

}


#pragma mark -警告框协议方法

//当警告框上的按钮被点击的时候会调用这个方法;

//参数1:委托

//参数2:被点击的按钮的下标

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

    

    NSLog(@"%lu",buttonIndex);

    if (buttonIndex == 0) {

        NSLog(@"点击了取消键");

    }else{

        NSLog(@"确定删除!!");

    }


    

}




#pragma mark -表单视图协议方法

//当表单上的按钮被点击的时候会调用这个方法

//参数1:委托

//参数2:被点击的按钮的下标(当前表单上所有的按钮从上到下一次增加)

- (void)actionSheet:(UIActionSheet *)actionSheet

  ckedButtonAtIndex:(NSInteger)buttonIndex{

    

    NSLog(@"%lu",buttonIndex);

    

    //根据不同的按钮点击做出不一样的反应

    switch (buttonIndex) {

        case 0:{

            

            break;

        }

        case 1:{

            

            break;

        }

        case 2:{

            

            break;

        }

        case 3:{

            

            break;

        }

        case 4:{

            

            break;

        }

        default:

            break;

    }

    

    

}






#pragma mark -创建表单视图

- (void)createActionSheet{

    

    //1.创建一个表单视图对象

    //UIActionSheet : UIView

    //参数1:设置标题

    //参数2:设置代理

    //参数3:最下面那个独立按钮的标题(可以是取消也可以是保存等操作)

    //参数4:最上面那个红色按钮的标题(可以写为nil)

    //参数5:中间普通按钮的标题,其他按钮标题;

    UIActionSheet *actionSheet = [[UIActionSheet alloc]

    initWithTitle:@"是否观看动漫?" delegate:self

       cancelButtonTitle:@"保存"

        destructiveButtonTitle:@"标题"

      otherButtonTitles:@"其他标题1",@"其他标题2", nil];

    

    

    //2.显示在界面上

    //[actionSheet showInView:_window];

    

    

    

    

}





#pragma mark -创建多段选择器

- (void)createSegmentControl{

    

    //1.创建多段选择器对象

    //UISegmentedControl:UIControl

    //参数:是一个数组(当前分段选择器中所有分段的标题的数组)

    

    UISegmentedControl *segmentControl = [[UISegmentedControl alloc]

                                          initWithItems:@[@"吸血鬼骑士",

                                                @"犬夜叉",@"纯情罗曼史"]];

    //2.设置frame

    segmentControl.frame = CGRectMake(0, 80, 375, 40);

    

    //3.显示在界面上

    [_window addSubview:segmentControl];

    

    //4.当前选中的分段(核心属性)

    //设置选中分段的下标;

    segmentControl.selectedSegmentIndex = 0;

    

    //5.添加事件

    [segmentControl addTarget:self action:@selector(segmentOnclicked:)

             forControlEvents:UIControlEventValueChanged];

    

    //6.获取当前分段数

    NSLog(@"%lu",segmentControl.numberOfSegments);

    

    //7.插入一个文字分段

    [segmentControl insertSegmentWithTitle:@"画江湖" atIndex:0

                                  animated:YES];

    

    //8.插入一个图片分段

    //imageWithRenderingMode:设置图片的渲染模式

    //图片不能正常显示的时候一般就去设置图片的渲染模式为

    //UIImageRenderingModeAlwaysOriginal

    [segmentControl insertSegmentWithImage:

    [   [UIImage imageNamed:@"player_up_1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]

                                   atIndex:1 animated:YES];

    

    //9.移除指定下标的分段(下标不可以越界);

    [segmentControl removeSegmentAtIndex:1 animated:YES];

    

    //10.移除所有的分段

    //[segmentControl removeAllSegments];

    

    //11.改变分段的标题

    [segmentControl setTitle:@"不良人" forSegmentAtIndex:0];

    

    //12.拿到指定下标分段的文字

    NSString *titile = [segmentControl titleForSegmentAtIndex:1];

    NSLog(@"%@",titile);

    

    //13.设置填充颜色

    [segmentControl setTintColor:[UIColor colorWithRed:100/255.0f

        green:179/255.0f blue:50/255.0f alpha:1]];

    

    

    

    

}


#pragma mark -点击分段事件

-(void) segmentOnclicked:(UISegmentedControl *)segment{

    

    NSLog(@"%ld",(long)segment.selectedSegmentIndex);

    

}



#pragma mark -创建活动指示器

- (void)createActivity{

    

  //  [_window setBackgroundColor:[UIColor Color]];

    

    //1.创建活动指示器对象

    UIActivityIndicatorView *activity = [[UIActivityIndicatorView

                                         alloc]initWithActivityIndicatorStyle:

                          

                                         UIActivityIndicatorViewStyleWhiteLarge];

    

    //设置frame

    activity.frame = CGRectMake(100, 300, 100, 100) ;

    [_window addSubview:activity];

    //2.活动的时候才可以看到活动指示器

    [activity startAnimating];

    

    //3.让活动指示器停止

    [activity stopAnimating];

    

}




#pragma mark -创建步数器

- (void)createStepper{

    

    //1.创建步数器对象

    //UIStepper:UIControl

    UIStepper *stepper = [[UIStepper alloc] initWithFrame:

                          CGRectMake(100, 250, 0, 0)];

    //2.显示在窗口

    [_window addSubview:stepper];

    

    //3.步进值(默认是0)

    stepper.value = 1;

    

    _showLabel.text = [NSString stringWithFormat:

                       @"%.2lf",stepper.value];

    

    //4.添加事件

    //stepper的加和减的按钮,都会自动的改变steppervalue的值

    [stepper addTarget:self action:@selector(stepperOnClicked:) forControlEvents:

     UIControlEventValueChanged];

    

    //5.步进值(每按一次加或减变化的值,默认是1

    stepper.stepValue = 10;

    

    //6.设置最大值和最小值;

    stepper.maximumValue = 10;

    stepper.minimumValue = -10;

    

    //7.设置填充颜色

    stepper.tintColor = [UIColor redColor];

    

}

#pragma mark -步数器事件

- (void)stepperOnClicked:(UIStepper *)stepper{

 

    //使用stepper最新的值去更新labelvalue

    _showLabel.text = [NSString stringWithFormat:@"%.2lf",stepper.value];

    

    

}


#pragma mark -UIProgressView进度条



- (void)CreateProgressView{

    

    //1.创建进度条对象

    //UIProgressViewStyleDefault//颜色是灰色的

    //UIProgressViewStyleBar//颜色是白色的

    UIProgressView *progressView = [[UIProgressView alloc]initWithProgressViewStyle:

                                    UIProgressViewStyleDefault];

    

    //2.设置frame;(设置高度无效)

    progressView.frame = CGRectMake(100, 200, 200, 50);

    

    progressView.tag = 77;

    

    //3.进度(核心属性)(0-1)

    progressView.progress = 0.5;

    

    

    //4.设置从开始到当前进度位置,进度条的颜色

    

    progressView.progressTintColor = [UIColor cyanColor];

    //5.从进度位置到结束,进度条的颜色

    progressView.trackTintColor = [UIColor redColor];

    

    //6.设置进度带动画效果;

    [progressView setProgress:0.2 animated:YES];

    

    [_window addSubview:progressView];

    

}



#pragma mark -UISlider

- (void)createSlider{

    

    //1.创建一个滑块对象;

    //UISlider:UIControl:UIView;

    UISlider *slider = [[UISlider alloc]initWithFrame:

    CGRectMake(100, 150, 200, 50)];

    //2.显示在界面上

    [_window addSubview:slider];

    

    //3.当前滑块位置对应的值;(默认的值是0-1)

    slider.value = 0.5f;

    

    //4.设置滑块的最小值和最大值

    //最小值默认是0

    slider.minimumValue = 1;

    //最大值默认是1

    slider.maximumValue = 10;

    

    slider.value = 5;

    

    //5.添加事件;

    //能添加的事件只有:UIControlEventValueChanged

    [slider addTarget:self action:@selector(sliderChange:)

     forControlEvents:UIControlEventValueChanged];

    

    //6.设置slider最左边显示的图片(一般不用)

    [slider setMinimumValueImage:[UIImage imageNamed:@"player_right_1"]];

    

    //7.把滑块设置为图片滑块;(常用)

    [slider setThumbImage:[UIImage imageNamed:@"player_down_1"]

                 forState:UIControlStateNormal];

    [slider setThumbImage:[UIImage imageNamed:@"player_up_1"]

                 forState:UIControlStateHighlighted];

    //8.滑条和滑块的颜色

    //设置最左端到滑块部分的填充颜色;

    [slider setMinimumTrackTintColor:[UIColor yellowColor]];

    

    //滑块到最右端的填充颜色

    [slider setMaximumTrackTintColor:[UIColor cyanColor]];

    

    //滑块的颜色

    [slider setThumbTintColor:[UIColor brownColor]];

    

    //9.设置滑块的值是否实时(连续)改变

    slider.continuous = YES;

    


}

//当滑块滑动的时候实时调用这个方法;

- (void)sliderChange:(UISlider *) slider{

    

    NSLog(@"%f",slider.value);

    

    //改变进度条的进度

    UIProgressView *progressView = (UIProgressView *)[_window viewWithTag:77];

    

    progressView.progress = slider.value / (slider.maximumValue -

                                            slider.minimumValue);

    

    

    

}



#pragma mark - UISwitch

- (void)createSwitch{

    

    //1.创建开关对象;

 //UISwitch:UIControl:UIView

    UISwitch *switch1 = [[UISwitch alloc]initWithFrame:

                         CGRectMake(100, 30, 0, 0)];

    

    //显示在界面上

    [_window addSubview:switch1];

    

    //2.开关的核心属性:开关关闭状态和开状态

    //yes: NO:(默认);

    //设置开关状态;

    [switch1 setOn:YES];

    //获取开关的状态;

    BOOL ret = [switch1 isOn];

    if (ret) {

        NSLog(@"开启");

    }else{

        NSLog(@"关闭");

    }

  

    //3.给开关添加事件

    //参数1:响应消息的对象

    //参数2:消息(可以不带参,也可以单参,带参只能带开关本身)

    //参数3:事件

    [switch1 addTarget:self action:@selector(switchOn:)

      forControlEvents:UIControlEventValueChanged];

    

    //4.设置开关开启状态的填充颜色;

    switch1.onTintColor = [UIColor yellowColor];

    

    //5.设置关闭状态的颜色;

    switch1.tintColor = [UIColor redColor];

    

    //6.设置开关滑块的颜色

    switch1.thumbTintColor = [UIColor cyanColor];


   

}


- (void)switchOn:(UISwitch *)switch1{

    

    //每次点击开关都创建表单;

    [self createActionSheet];

    

    

    //每次触摸开关,开关的状态都会发生改变

    if (switch1.on) {

    

        NSLog(@"开关开启");

    

    }else{

    

        NSLog(@"开关关闭");

    }

    

}




@end


转载于:https://my.oschina.net/luhoney/blog/657625

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值