对button更深层次的研究 详解

来源:互联网 发布:c用什么软件编程 编辑:程序博客网 时间:2024/04/30 15:07


//  Copyright (c) 2015 wanghu. All rights reserved.

//


#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [superviewDidLoad];

    /*

      UIButton的类是一个UIControl子类,它实现了在触摸屏上的按钮

      **/

   /**

     *  button更深层次的研究

     *

     *  @return return value description

     */

   /**

     *  在这里button的类型是一个结构体 有一下几种类型 UIButtonTypeCustom = 0,                         // no button type

     UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0),  // standard system button

     

     UIButtonTypeDetailDisclosure,  蓝色小箭头按钮,主要做详细说明用

     UIButtonTypeInfoLight,  亮色感叹号

     UIButtonTypeInfoDark,   //暗色感叹号

     UIButtonTypeContactAdd,  //十字加号按钮

     

     UIButtonTypeRoundedRect = UIButtonTypeSystem,

     *

     *  @return return value description

     */


    UIButton  *button=[UIButtonbuttonWithType:UIButtonTypeCustom];

        button.frame=CGRectMake(100,100, 200, 100);//button的位置和大小

   /**

     *   UIControlStateNormal       = 0,    正常状态

     UIControlStateHighlighted  = 1 << 0,                  // 高亮状态

     UIControlStateDisabled     = 1 << 1,                   //禁用状态

     UIControlStateSelected     = 1 << 2,                  // 选中状态

     UIControlStateApplication  = 0x00FF0000,              // 用于应用程序额外的标志

     UIControlStateReserved     = 0xFF000000               // 用于内部框架的标志

     

     *

     *  @return return value description

     */


    [button setTitle:@"我是buttn的名字"forState:UIControlStateNormal];

    [button setTitle:@"我是button的高亮模式"forState:UIControlStateHighlighted];

    ////返回在某个状态下,按钮标题的富文本

    NSAttributedString *attributedString = [buttonattributedTitleForState:UIControlStateNormal];

    

   /*

     * 默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点,如果这下面的这个属性设置为no

     * 那么可以去掉这个功能

     */

    button.adjustsImageWhenHighlighted =NO;

    [button setTitleColor:[UIColorredColor] forState:UIControlStateNormal];

    /*跟上面的情况一样,默认情况下,当按钮禁用的时候,图像会被画得深一点,设置NO可以取消设置*/

    button.adjustsImageWhenDisabled =NO;

    /*下面的这个属性设置为yes的状态下,按钮按下会发光*/

    button.showsTouchWhenHighlighted =YES;

    

   /*

    button设置标签,用来辨别点击的是哪个button,常用在委托方法中。

     **/

    button.tag =1;

    //定义按钮标题字体格式

    

    [button.titleLabelsetFont:[UIFontboldSystemFontOfSize:20]];

    //设置某个状态下按钮标题的阴影颜色

    [button setTitleShadowColor:[UIColorgrayColor] forState:UIControlStateNormal];

    //button添加图片

    [button setBackgroundColor:[UIColorgreenColor]];

    [button setImage:[UIImageimageNamed:@"图片名字"]forState:UIControlStateNormal];

    [button setBackgroundImage:[UIImageimageNamed:@"背景图片名字"]forState:UIControlStateNormal];

   /**

     *  / /添加目标为特定事件/行动。你可以多次调用这个,您可以指定多个目标为一个特定的事件/行动。

       / /传入nil作为目标上升响应者链。行动可以选择包括发送者和事件的顺序

       / /动作不能为空。注意,目标不是保留。

     *

     *  @param ClickBtn

     *

     *  @return  点击事件

     */

   /**

     UIControlEventTouchDown           = 1 <<  0,      // 指鼠标左键按下(注:只是按下)的动作


     UIControlEventTouchDownRepeat     = 1 <<  1,     //指鼠标左键连续多次重复按下(注:只是按下)的动作,比如,鼠标连续双击、三击、……、多次连击。说明:多次重复按下时,事件序列是这样的:

     UIControlEventTouchDown ->

     (UIControlEventTouchUpInside) ->

     UIControlEventTouchDown ->

     UIControlEventTouchDownRepeat ->

     (UIControlEventTouchUpInside) ->

     UIControlEventTouchDown ->

     UIControlEventTouchDownRepeat ->

     (UIControlEventTouchUpInside) ->

     除了第一次按下外,后面每次摁下都是一个UIControlEventTouchDown事件,然后紧跟一个UIControlEventTouchDownRepeat事件。


     UIControlEventTouchDragInside     = 1 <<  2,  //指按下鼠标,然后在控件边界范围内拖动。


     UIControlEventTouchDragOutside    = 1 <<  3,   //UIControlEventTouchDragInside不同的是,拖动时,鼠标位于控件边界范围之外。但首先得有个UIControlEventTouchDown事件,然后接一个UIControlEventTouchDragInside事件,再接一个UIControlEventTouchDragExit事件,这时,鼠标已经位于控件外了,继续拖动就是UIControlEventTouchDragOutside事件了。

     具体操作是:在控件里面按下鼠标,然后拖动到控件之外

     UIControlEventTouchDragEnter      = 1 <<  4,  //指拖动动作中,从控件边界外到内时产生的事件。


     UIControlEventTouchDragExit       = 1 <<  5,  //指拖动动作中,从控件边界内到外时产生的事件。


     UIControlEventTouchUpInside       = 1 <<  6,  //指鼠标在控件范围内抬起,前提先得按下,即UIControlEventTouchDownUIControlEventTouchDownRepeat事件。


     UIControlEventTouchUpOutside      = 1 <<  7,  //指鼠标在控件边界范围外抬起,前提先得按下,然后拖动到控件外,即 UIControlEventTouchDown -> UIControlEventTouchDragInside(n) -> UIControlEventTouchDragExit -> UIControlEventTouchDragOutside(n) 时间序列,再然后就是抬起鼠标,产生UIControlEventTouchUpOutside事件。

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


     

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

     

     UIControlEventEditingDidBegin     = 1 << 16,     // UITextField 当文本控件中开始编辑时发送通知。


     UIControlEventEditingChanged      = 1 << 17,  //当文本控件中的文本被改变时发送通知。


     UIControlEventEditingDidEnd       = 1 << 18,  //当文本控件中编辑结束时发送通知。


     UIControlEventEditingDidEndOnExit = 1 << 19,     // 'return key' ending editing 当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。


     

     UIControlEventAllTouchEvents      = 0x00000FFF,  // for touch events  通知所有触摸事件。


     UIControlEventAllEditingEvents    = 0x000F0000,  // for UITextField通知所有关于文本编辑的事件。


     UIControlEventApplicationReserved = 0x0F000000,  // range available for application use

     UIControlEventSystemReserved      = 0xF0000000,  // range reserved for internal framework use

     UIControlEventAllEvents           = 0xFFFFFFFF   //通知所有事件。



     */

    [button addTarget:selfaction:@selector(TouchDown:)forControlEvents:UIControlEventTouchDown];

  

    [button addTarget:selfaction:@selector(TouchDownRepeat:)forControlEvents:UIControlEventTouchDownRepeat];

 

    [button addTarget:selfaction:@selector(TouchDragInside:)forControlEvents:UIControlEventTouchDragInside];

 

    [button addTarget:selfaction:@selector(TouchDragOutside:)forControlEvents:UIControlEventTouchDragOutside];

 

    [button addTarget:selfaction:@selector(TouchDragEnter:)forControlEvents:UIControlEventTouchDragEnter];

 

    [button addTarget:selfaction:@selector(TouchDragExit:)forControlEvents:UIControlEventTouchDragExit];

 

    [button addTarget:selfaction:@selector(TouchUpInside:)forControlEvents:UIControlEventTouchUpInside];

 

    [button addTarget:selfaction:@selector(TouchUpOutside:)forControlEvents:UIControlEventTouchUpOutside];

    

    [button addTarget:selfaction:@selector(TouchCancel:)forControlEvents:UIControlEventTouchCancel];

   /*

     删除目标/一组事件的行动。传入NULL的行动来消除这一目标的所有操作

     **/

//    [button removeTarget:self action:@selector(removeClick:) forControlEvents:UIControlEventTouchDown];

    

     [self.viewaddSubview:button];


    

}

-(void)removeClick:(id)sender

{


    NSLog(@"删除目标/一组事件的行动。传入NULL的行动来消除这一目标的所有操作");

}

- (void)TouchDown:(id)sender


{

 

    NSLog(@"%@",NSStringFromSelector(_cmd));

 

}


- (void)TouchDownRepeat:(id)sender


{

 

    NSLog(@"%@",NSStringFromSelector(_cmd));

 

}


- (void)TouchDragInside:(id)sender


{

 

    NSLog(@"%@",NSStringFromSelector(_cmd));

 

}


- (void)TouchDragOutside:(id)sender


{

  

    NSLog(@"%@",NSStringFromSelector(_cmd));

 

}


- (void)TouchDragEnter:(id)sender

 {

 

    NSLog(@"%@",NSStringFromSelector(_cmd));

 

}



- (void)TouchDragExit:(id)sender


{

 

    NSLog(@"%@",NSStringFromSelector(_cmd));

 

}

 - (void)TouchUpInside:(id)sender


{

  

    NSLog(@"%@",NSStringFromSelector(_cmd));

 

}


- (void)TouchUpOutside:(id)sender


{

 

    NSLog(@"%@",NSStringFromSelector(_cmd));

  

}

- (void)TouchCancel:(id)sender


{

 

    NSLog(@"%@",NSStringFromSelector(_cmd));

 

}

/*   注意底下内容为机器翻译的内容有兴趣的童鞋们可以看看

 adjustsImageWhenDisabled

 一个布尔值,决定是否形象的变化时,该按钮被禁用。

 

 @属性(非原子)BOOL adjustsImageWhenDisabled讨论,如果是的话,图像绘制较深时,按钮被禁用。默认值是YES

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 @财产adjustsImageWhenHighlighted

 UIButton.h宣布相关的示例代码BubbleLevel

 

 [ 编辑 ]

 

 adjustsImageWhenHighlighted

 一个布尔值,决定是否按钮时,突出显示图像的变化。

 

 @属性(非原子)BOOL adjustsImageWhenHighlighted讨论,如果是,绘制图像较轻的按钮时,突出显示。默认值是YES

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 @财产adjustsImageWhenDisabled

 UIButton.h宣布相关的示例代码BubbleLevel

 

 [ 编辑 ]

 

 按钮类型

 按钮类型。(只读)

 

 @属性(非原子,只读)UIButtonType按钮类型的讨论,见UIButtonType的可能值。

 

 供货情况在iPhone OS 2.0和更高版本。声明在UIButton.h

 

 [ 编辑 ]

 

 contentEdgeInsets

 内容的插图或一开始就为每个边缘。

 

 @属性(非原子)UIEdgeInsets contentEdgeInsets如果每条边的价值是积极的,指定的插图,否则,指定一开始。一个插图是周围绘制矩形的保证金;每边(左,右,顶部和底部),可以有不同的值。使用UIEdgeInsetsMake功能设置此属性。默认值是UIEdgeInsetsZero

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 _AT_财产imageEdgeInsets

 宣布UIButton.h currentBackgroundImage按钮上显示当前的背景图像。(只读)

 

 @属性(只读,非原子,保留)的UIImage * currentBackgroundImage讨论这个值可以为零。

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 _AT_财产currentImage

 声明在UIButton.h

 

 [ 编辑 ]

 

 currentImage

 当前图像上显示的按钮。(只读)

 

 @属性(只读,非原子,保留)的UIImage * currentImage讨论这个值可以为零。

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 _AT_财产currentBackgroundImage

 声明在UIButton.h

 

 [ 编辑 ]

 

 currentTitle

 当前标题,按钮上显示的。(只读)

 

 @属性(只读,非原子,保留)的NSString * currentTitle讨论这个值可能为零。

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 @财产currentTitleColor财产currentTitleShadowColor

 声明在UIButton.h

 

 [ 编辑 ]

 

 currentTitleColor

 颜色用于显示标题。(只读)

 

 @属性(只读,非原子,保留)UIColor * currentTitleColor讨论这个值是保证不会是零。默认值是白色。

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 @财产currentTitle财产currentTitleShadowColor

 声明在UIButton.h

 

 [ 编辑 ]

 

 currentTitleShadowColor

 标题的阴影的颜色。(只读)

 

 @属性(只读,非原子,保留)UIColor * currentTitleShadowColor讨论默认值是白色。

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 @财产currentTitle财产currentTitleColor

 声明在UIButton.h

 

 [ 编辑 ]

 

 字体

 字体用来显示按钮上的文字。

 

 @属性(非原子,保留)UIFont *字体的讨论,如果为零,使用系统字体。默认值是零。

 

 供货情况在iPhone OS 2.0和更高版本。声明在UIButton.h

 

 [ 编辑 ]

 

 imageEdgeInsets

 图像插图或一开始就为每个边缘。

 

 @属性(非原子)UIEdgeInsets imageEdgeInsets如果每条边的价值是积极的,指定的插图,否则,指定一开始。一个插图是周围绘制矩形的保证金;每边(左,右,顶部和底部),可以有不同的值。使用UIEdgeInsetsMake功能设置此属性。默认值是UIEdgeInsetsZero

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 _AT_财产titleEdgeInsets

 声明在UIButton.h

 

 [ 编辑 ]

 

 lineBreakMode

 绘制文本时使用的换行模式。

 

 属性(非原子)UILineBreakMode lineBreakMode讨论这个属性是UILineBreakMode描述的常量之一。默认值是UILineBreakModeMiddleTruncation

 

 供货情况在iPhone OS 2.0和更高版本。在UIButton.h声明reversesTitleShadowWhenHighlighted一个布尔值,决定是否按钮时,突出的标题阴影的变化。

 

 如果有属性(非原子)BOOL reversesTitleShadowWhenHighlighted讨论,从雕刻的影子时,突出浮雕外观的变化。默认值是NO

 

 供货情况在iPhone OS 2.0和更高版本。声明在UIButton.h

 

 [ 编辑 ]

 

 showsTouchWhenHighlighted

 一个布尔值,决定是否点击按钮会导致其发光。

 

 @属性(非原子)BOOL showsTouchWhenHighlighted讨论,如果是的话,按钮发光时挖掘出来,否则,它不会。图像和按钮的行为是没有改变的辉光。默认值是NO

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 @财产adjustsImageWhenHighlighted

 声明在UIButton.h

 

 [ 编辑 ]

 

 titleEdgeInsets

 标题插图或一开始就为每个边缘。

 

 @属性(非原子)UIEdgeInsets titleEdgeInsets如果每条边的价值是积极的,指定的插图,否则,指定一开始。一个插图是周围绘制矩形的保证金;每边(左,右,顶部和底部),可以有不同的值。使用UIEdgeInsetsMake功能设置此属性。默认值是UIEdgeInsetsZero

 

 供货情况在iPhone OS 2.0和更高版本。另请参见

 

 _AT_财产imageEdgeInsets

 声明在UIButton.h

 

 [ 编辑 ]

 

 titleShadowOffset

 用于显示接收的标题阴影的偏移。

 

 属性(非原子)CGSize titleShadowOffset讨论的水平和垂直偏移值,使用CGSize数据类型的宽度和高度场指定的。正面的价值观总是向上延伸的权利,从用户的角度来看。默认值是CGSizeZero

 

 供货情况在iPhone OS 2.0和更高版本。宣布UIButton.h类方法

 

 buttonWithType:创建并返回一个指定类型的新按钮。

 

 +IDbuttonWithType:(UIButtonType)按钮类型

 

 [ 编辑 ]

 

 参数

 

 [ 编辑 ]

 

 按钮类型

 按钮类型。见的可能值UIButtonType

 

 返回值一个新创建的按钮。

 

 供货情况在iPhone OS 2.0和更高版本。相关的示例代码配件BubbleLevel TheElements TouchCells UICatalog宣布UIButton.h实例方法

 

 [ 编辑 ]

 

 backgroundImageForState

 返回一个按钮的状态中使用的背景图像。

 

 - UIImage*backgroundImageForState:(UIControlState)状态

 

 参数状态的状态使用的背景图像。可能的值是在UIControlState描述。

 

 返回值用于指定的状态背景图像。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - setBackgroundImageforStateUIButton.h声明

 

 [ 编辑 ]

 

 backgroundRectForBounds

 返回矩形的接收绘制其背景。

 

 - CGRectbackgroundRectForBounds:(CGRect)边界

 

 参数范围接收器的边界矩形。

 

 返回值的矩形接收机,绘制其背景。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - contentRectForBoundsUIButton.h声明

 

 [ 编辑 ]

 

 contentRectForBounds

 返回矩形的接收提请其全部内容。

 

 - CGRectcontentRectForBounds:(CGRect)边界

 

 参数限定为接收器的边界矩形。

 

 返回值的矩形接收提请其全部内容。

 

 讨论内容的矩形来显示图像和标题对齐和其他设置,包括任何填充和调整所需的面积。

 

 供货情况在iPhone OS 2.0和更高版本。 - titleRectForContentRect - imageRectForContentRect - backgroundRectForBoundsUIButton.h imageForState中声明:返回一个按钮的状态所使用的图像。

 

 - UIImage*imageForState:(UIControlState)状态

 

 参数状态使用图像的状态。可能的值是在UIControlState描述。

 

 返回值用于指定状态的图像。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - setImageforStateUIButton.h imageRectForContentRect宣布:返回接收绘制其图像的矩形。

 

 - CGRectimageRectForContentRect:(CGRectcontentRect

 

 参数contentRect接收的内容矩形。

 

 返回值接收绘制其图像的矩形。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - contentRectForBounds - titleRectForContentRectforState::UIButton.h setBackgroundImage宣布设置背景图像使用指定的按钮状态。

 

 - (无效)setBackgroundImage:(UIImage*)图像forState:(UIControlState)状态

 

 参数图像背景图像使用指定的状态。

 

 状态的状态使用指定的图像。在UIControlState值的描述。

 

 在一般性讨论,如果没有一个国家指定一个属性,默认是使用UIControlStateNormal的价值。如果UIControlStateNormal值未设置,则属性默认为一个系统的价值。因此,至少,你应该设置为正常状态的价值。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - backgroundImageForState:相关示例代码配件BubbleLevel TheElements UICatalog UIButton.h setImage宣布:forState:设置图像使用指定的状态。

 

 - (无效)setImage:(UIImage*)图像forState:(UIControlState)状态

 

 参数图像的图像使用指定的状态。

 

 状态的状态使用指定的标题。在UIControlState值的描述。

 

 在一般性讨论,如果没有一个国家指定一个属性,默认是使用UIControlStateNormal的价值。如果UIControlStateNormal值未设置,则属性默认为一个系统的价值。因此,至少,你应该设置为正常状态的价值。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - imageForStateforState::相关示例代码BubbleLevelUIButton.h setTitle声明TouchCells设置标题使用指定的状态。

 

 - (无效)setTitle是:(NSString*forState标题:(UIControlState)状态

 

 参数标题标题使用指定的状态。

 

 状态的状态使用指定的标题。在UIControlState值的描述。

 

 在一般性讨论,如果没有一个国家指定一个属性,默认是使用UIControlStateNormal的价值。如果UIControlStateNormal价值不设置,则属性默认为系统值。因此,至少,你应该设置为正常状态的价值。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - titleForStateUIButton.h setTitleColorforState相关的示例代码BubbleLevel UICatalog宣布:设置标题使用指定的状态的颜色。

 

 - (无效)setTitleColor:(UIColor *)颜色forState:(UIControlState)状态

 

 参数颜色的标题使用指定的状态的颜色。

 

 状态的状态使用指定的颜色。在UIControlState值的描述。

 

 在一般性讨论,如果没有一个国家指定一个属性,默认是使用UIControlStateNormal的价值。如果UIControlStateNormal值未设置,则属性默认为一个系统的价值。因此,至少,你应该设置为正常状态的价值。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - titleColorForStateUIButton.h setTitleShadowColorforState相关的示例代码BubbleLevel UICatalog宣布:设置标题阴影的颜色,使用指定的状态。

 

 - (无效)setTitleShadowColor:(UIColor *)颜色forState:(UIControlState)状态

 

 参数颜色的标题阴影的颜色,使用指定的状态。

 

 状态的状态使用指定的颜色。在UIControlState值的描述。

 

 在一般性讨论,如果没有一个国家指定一个属性,默认是使用UIControlStateNormal的价值。如果UIControlStateNormal值未设置,则属性默认为一个系统的价值。因此,至少,你应该设置为正常状态的价值。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - titleShadowColorForStateUIButton.h titleColorForState宣布:返回一个国家使用的标题的颜色。

 

 - UIColor *titleColorForState:(UIControlState)状态

 

 参数状态的国家,使用的标题颜色。可能的值是在UIControlState描述。

 

 返回值指定的状态标题的颜色。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - setTitleColorforStateUIButton.h titleForState宣布:返回一个国家所使用的标题。

 

 - NSString*titleForState:(UIControlState)状态

 

 参数状态的国家,使用的标题。可能的值是在UIControlState描述。

 

 返回值指定的状态标题。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - setTitleforStateUIButton.h titleRectForContentRect宣布:返回矩形的接收器绘制它的标题。

 

 - CGRecttitleRectForContentRect:(CGRectcontentRect

 

 参数contentRect接收的内容矩形。

 

 返回值的矩形接收器绘制它的标题。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - contentRectForBounds - imageRectForContentRectUIButton.h titleShadowColorForState宣布:返回的阴影颜色为国家所用的标题。

 

 - UIColor *titleShadowColorForState:(UIControlState)状态

 

 参数状态的国家,使用的标题阴影颜色。可能的值是在UIControlState描述。

 

 返回值指定的状态标题的影子颜色。

 

 供货情况在iPhone OS 2.0和更高版本。又见 - setTitleShadowColorforStateUIButton.h常量声明

 

 UIButtonType指定一个按钮的风格。

 

 typedef枚举{

 

 UIButtonTypeCustom = 0UIButtonTypeRoundedRectUIButtonTypeDetailDisclosureUIButtonTypeInfoLightUIButtonTypeInfoDarkUIButtonTypeContactAdd

 } UIButtonType;常量UIButtonTypeCustom无按钮的样式。

 


 **/

- (void)didReceiveMemoryWarning {

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end


0 0
原创粉丝点击