博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS开发之UI中的其他小控件
阅读量:7042 次
发布时间:2019-06-28

本文共 9124 字,大约阅读时间需要 30 分钟。

hot3.png

#import "AppDelegate.h"

AppDelegate () <UIActionSheetDelegate,UIAlertViewDelegate,

UITextViewDelegate>{

    UILabel *_showLabel;

}

@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

你可能感兴趣的文章
Mac nginx 403
查看>>
Lock接口的实现类
查看>>
结合源码分析 setTimeout / setInterval / setImmediate / process.nextTick 执行时机
查看>>
jQuery 效果 - 淡入淡出
查看>>
3.6 Struts2上传文件
查看>>
MyISAM InnoDB 区别
查看>>
ruby中的inject
查看>>
stringByTrimmingCharactersInSet与stringByReplaci...
查看>>
JavaSE——常用类
查看>>
Mybatis懒加载
查看>>
记录otter遇到问题
查看>>
Java虚拟机详解01----初识JVM
查看>>
神经网络---前馈神经网络
查看>>
离职不容易,自己怎么就这么被玩了呢?
查看>>
我用过的Linux命令
查看>>
Flume-ng 配置channel轮询负载均衡
查看>>
Dubbo基础知识
查看>>
极速发展的饿了么订单系统架构演进
查看>>
SetResBoxState(true,true)页面弹出动画,类似抽屉效果
查看>>
项目管理软件oKit V2.9于12月31日发布
查看>>