iOS-控件之间的继承

来源:互联网 发布:淘宝人工客服电话400 编辑:程序博客网 时间:2024/06/05 22:34

最近在写项目的时候感觉有些控件在使用的时候有些新的体悟,所以就想整理一下曾经用到的东西,如有不详之处,还请诸位多多指教,我们共同学习#^_^#


UIControl:控制类,触摸一个视图,执行某个方法

点击一个视图,触发一个事件。他是一个可以带有触发事件的视图

 

主要内容:

  1. UIControl的子类
  2. UIControl
  3. 响应事件
  4. 封装
  5. 按钮UIButton

 

一、UIControl的子类

UIButton:按钮

UISwitch:哪个,开关

UISegmentedControl:分段选择控件

UISlider滑竿:(例如:音量的调节)

UITextField:文本框,是文本输入的控件

UIPageControl:翻页,页面控制(五个页面的切换。。。。。)

这些视图都可以点击触发事件

 

UIControl的常用属性

  1. enabled启用,激活。是用来设置是否可以启用触发事件,他是BOOL类型默认值是YES,如果设置成NO,就是禁用这个视图的触发事件
  2. selected:选中(状态)。是不是选中了这个控件。默认值是NO
  3. highlighted:高亮(状态)。默认值是NO

 

二、重要方法

给视图添加响应事件的方法

-(void)addTarget:(nullable id)target action:(SEL)actionforControlEvents:(UIControlEvents)controlEvents;

  1. Target:目标。指定一个目标,让这个目标去调用方法。
  1. action:行动。要让这个目标做什么事
  2. SEL:运行时->@selecter()他是一个选择者,右脚方法选择器,作用:用来选择一个方法
  3. UIControlEvents:控制事件、执行行动的方式

 

三、控制事件

UIControlEventTouchDown  *****

 单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。

 UIControlEventTouchDownRepeat

 多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。

 UIControlEventTouchDragInside  ****

 当一次触摸在控件窗口内拖动时。

 UIControlEventTouchDragOutside

 当一次触摸在控件窗口之外拖动时。

 UIControlEventTouchDragEnter

 当一次触摸从控件窗口之外拖动到内部时。

 UIControlEventTouchDragExit

 当一次触摸从控件窗口内部拖动到外部时。

 

 UIControlEventTouchUpInside  ******

 所有在控件之内触摸抬起事件

 UIControlEventTouchUpOutside

 所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。

 UIControlEventTouchCancel  ******

 所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。

 UIControlEventTouchChanged

 当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。

 UIControlEventEditingDidBegin

 当文本控件中开始编辑时发送通知。

 UIControlEventEditingChanged

 当文本控件中的文本被改变时发送通知。

 UIControlEventEditingDidEnd

 当文本控件中编辑结束时发送通知。

 UIControlEventEditingDidOnExit  ****

 当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。

 UIControlEventAlltouchEvents

 通知所有触摸事件。

 UIControlEventAllEditingEvents

 通知所有关于文本编辑的事件。

 UIControlEventAllEvents

 通知所有事件。

 

四、封装

1、封装一个弹出框这种视图,用户可以传图想显示的内容以及弹出框消失的时间

 

(一、)封装按钮,有提示文字,并且可以点击

提示文字:UILable

可以点击:UIControl

 

UIButton是一个按钮,是系统封装好的UIControl。可以再里面放置文字图片以及设置文字图片相关的内容,同时也可以触发事件。

  1. 初始化

有一个类方法

+(instancetypebuttonWithType:(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];

  

 其他控件会尽快整理出来的。

0 0
原创粉丝点击