最近在写项目的时候感觉有些控件在使用的时候有些新的体悟,所以就想整理一下曾经用到的东西,如有不详之处,还请诸位多多指教,我们共同学习#^_^#
UIControl:控制类,触摸一个视图,执行某个方法
点击一个视图,触发一个事件。他是一个可以带有触发事件的视图
主要内容:
- UIControl的子类
- UIControl
- 响应事件
- 封装
- 按钮UIButton
一、UIControl的子类
UIButton:按钮
UISwitch:哪个,开关
UISegmentedControl:分段选择控件
UISlider滑竿:(例如:音量的调节)
UITextField:文本框,是文本输入的控件
UIPageControl:翻页,页面控制(五个页面的切换。。。。。)
这些视图都可以点击触发事件
UIControl的常用属性
- enabled启用,激活。是用来设置是否可以启用触发事件,他是BOOL类型默认值是YES,如果设置成NO,就是禁用这个视图的触发事件
- selected:选中(状态)。是不是选中了这个控件。默认值是NO。
- highlighted:高亮(状态)。默认值是NO。
二、重要方法
给视图添加响应事件的方法
-(void)addTarget:(nullable id)target action:(SEL)actionforControlEvents:(UIControlEvents)controlEvents;
- Target:目标。指定一个目标,让这个目标去调用方法。
- action:行动。要让这个目标做什么事
- SEL:运行时->@selecter()他是一个选择者,右脚方法选择器,作用:用来选择一个方法
- UIControlEvents:控制事件、执行行动的方式
三、控制事件
UIControlEventTouchDown *****
单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。
UIControlEventTouchDownRepeat
多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。
UIControlEventTouchDragInside ****
当一次触摸在控件窗口内拖动时。
UIControlEventTouchDragOutside
当一次触摸在控件窗口之外拖动时。
UIControlEventTouchDragEnter
当一次触摸从控件窗口之外拖动到内部时。
UIControlEventTouchDragExit
当一次触摸从控件窗口内部拖动到外部时。
UIControlEventTouchUpInside ******
所有在控件之内触摸抬起事件。
UIControlEventTouchUpOutside
所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。
UIControlEventTouchCancel ******
所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。
UIControlEventTouchChanged
当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。
UIControlEventEditingDidBegin
当文本控件中开始编辑时发送通知。
UIControlEventEditingChanged
当文本控件中的文本被改变时发送通知。
UIControlEventEditingDidEnd
当文本控件中编辑结束时发送通知。
UIControlEventEditingDidOnExit ****
当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。
UIControlEventAlltouchEvents
通知所有触摸事件。
UIControlEventAllEditingEvents
通知所有关于文本编辑的事件。
UIControlEventAllEvents
通知所有事件。
四、封装
1、封装一个弹出框这种视图,用户可以传图想显示的内容以及弹出框消失的时间
(一、)封装按钮,有提示文字,并且可以点击
提示文字:UILable
可以点击:UIControl
UIButton:是一个按钮,是系统封装好的UIControl。可以再里面放置文字图片以及设置文字图片相关的内容,同时也可以触发事件。
- 初始化
有一个类方法
+(instancetype)buttonWithType:(UIButtonType)buttonType;
UIButtonType
定制
UIButtonTypeCustom
系统默认的样式
UIButtonTypeSystem
UIButtonTypeDetailDisclosure:显示详细信息的样式
UIButtonTypeInfoLight:高量
UIButtonTypeInfoDark,:灰暗
UIButtonTypeContactAdd:+
UIButtonTypeRoundedRect:= UIButtonTypeSystem, // Deprecated, use UIButtonTypeSystem instead
UIControlState:状态
UIControlStateNormal:普通状态
UIControlStateHighlighted:高亮
UIControlStateDisabled:取消禁用状态
UIControlStateSelected:选中
UIButton *butt = [UIButtonbuttonWithType:UIButtonTypeCustom];
butt.frame =CGRectMake(200,40,play.size.width/10, play.size.height/10);
/*
*默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点,如果这下面的这个属性设置为no,
*那么可以去掉这个功能
*/
butt.adjustsImageWhenHighlighted= NO;
/*跟上面的情况一样,默认情况下,当按钮禁用的时候,图像会被画得深一点,设置NO可以取消设置*/
butt.adjustsImageWhenDisabled= NO;
/*下面的这个属性设置为yes的状态下,按钮按下会发光*/
butt.showsTouchWhenHighlighted= YES;
// 给按钮设置背景图片
UIImage *play = [UIImageimageNamed:@"start.png"];
UIImage *pause = [UIImageimageNamed:@"Pause.png"];
[butt setImage:playforState:UIControlStateNormal];
[butt setImage:pauseforState:UIControlStateSelected];
// 当点击时有高亮
butt.showsTouchWhenHighlighted =YES;
// butt.titleLabel:but上的lable
butt.backgroundColor = [UIColorgreenColor];
/*
// 普通状态下的标题
// [butt setTitle:@"登录"forState:UIControlStateNormal];
// 选中状态的标题
// [butt setTitle:@"正在登录"forState:UIControlStateSelected];
// 设置标题的字体颜色
// [butt setTitleColor:[UIColor purpleColor]forState:UIControlStateHighlighted];
*/
[butt addTarget:selfaction:@selector(loginTo:)forControlEvents:UIControlEventTouchUpInside];
/*
// 给按钮设置背景图片可以同时显示上面的标题
//-(void)setBackgroundImage:(nullable UIImage *)imageforState:(UIControlState)state
[self.window addSubview:butt];
// titleForState:获得按钮某个状态的标题
// titleColorForState:获得按钮某个状态的文字颜色
// titleShadowColorForState:获得按钮某个状态的标题阴影颜色
// imageForState:通过按钮的状态找到按钮这个状态的图片
// backgroundImageForState:获得按钮某个状态的背景图片
// imageForState通过按钮的状态找到按钮此时状态上面的图片
// UIImage是一张图片 UIImageView是一个视图*/
UIImage *getImage = [but imageForState:UIControlStateSelected];
//
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(200,200,100, 100)];
imageView.image = getImage;
[self.windowaddSubview:imageView];
-(void)loginTo:(UIButton*)sender{
// 通过设置selected状态来更新按钮上面的标题
sender.selected = sender.selected!=YES?YES:NO;
}
-------------------------------------------
// [self xxx];等3秒再执行
[selfperformSelector:@selector(removeAlertView)withObject:nilafterDelay:3];
其他控件会尽快整理出来的。