文档章节

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

鹿微微鹿
 鹿微微鹿
发布于 2016/04/12 21:05
字数 1990
阅读 14
收藏 0


#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


© 著作权归作者所有

鹿微微鹿
粉丝 8
博文 116
码字总数 71882
作品 0
程序员
私信 提问
疯狂ios讲义之不使用界面布局文件开发UI界面

如果打算使用纯代码来开发UI界面,则不需要设计任何界面布局文件,没有界面布局文件,也就不再需要使用自定义的视图控制器。这样程序可以直接在应用程序委托对象的application: didFinishLau...

博文视点
2014/01/20
2.5K
7
QMUI iOS UI 框架正式发布

QMUI iOS QMUI iOS 是一个致力于提高项目 iOS UI 开发效率的解决方案,其设计目是用于辅助快速搭建一个具备基本设计还原效果的 iOS 项目,同时利用自身提供的丰富控件及兼容处理,让开发者能...

kayo5994
2017/01/03
3.8K
2
JavaScript(React Native、Node.js等)移动、服务端通吃的全栈语言

作者:李宁老师 东北大学计算机专业硕士。曾任沈阳东软股份项目经理。51CTO学院签约讲师。从事软件研究和开发超过20年。长久以来一直从事Java、Android、iOS、C++、Swift、Objective-C以及跨...

androidguy
2018/06/29
0
0
iOS 流式布局 UI 框架 CocoaUI 开源了!

CocoaUI 是一个强大的 iOS UI 框架,使用 Web 开发者熟悉的 HTML+CSS 流式布局方式,轻松地开发 iOS 原生 App 的界面。CocoaUI 的特性主要包括: 高效的原生界面, 非低效的 WebView 控件方式...

ideawu
2015/06/17
11.4K
9
iOS 9音频应用播放音频之第一个ios9音频实例

iOS 9音频应用播放音频之第一个ios9音频实例 第一个ios9音频实例 为了让开发者可以对上面的内容有更加深入的了解,本节将实现播放音频的第一个实例。在此实例中会涉及到项目的创建、界面设计...

大学霸
2015/11/13
220
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
144
8
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部