UIButton

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (void)dealloc

{

    self.window = nil;

    [super dealloc];

}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    

    self.window = [[[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds] autorelease];

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

    

    self.window.rootViewController = [[UIViewController alloc] init];

    // UIControl  添加了状态和事件

    //UIButton -> UIControl -> UIView -> NSObject

    /*  buttontype

     UIButtonTypeRoundedRect == UIButtonTypeSystem

     UIButtonTypeDetailDisclosure       !号的按钮

     UIButtonTypeContactAdd             + 号的按钮

     UIButtonTypeCustom         自定义图片时使用 !!!

     */

    //使用类方法创建button

    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];

    button.frame = CGRectMake(50, 50, 100, 50);

    

    /* state

     UIControlStateNormal           正常

     UIControlStateDisabled         禁用

     UIControlStateHighlighted      高亮

     UIControlStateSelected         选择

     */

    

    //设置标题, 根据不同状态

    [button setTitle:@"normal" forState:UIControlStateNormal];

    [button setTitle:@"disabled" forState:UIControlStateDisabled];

    [button setTitle:@"highLighted" forState:UIControlStateHighlighted];

    [button setTitle:@"selected" forState:UIControlStateSelected];

    //设置选择状态  缺省  NO

    //    button.selected = YES;

    //使能开关     缺省 YES

    //    button.enabled = NO;

    

    //设置全局的颜色 主题颜色

    button.tintColor = [UIColor blackColor];

    

    //根据状态来设置颜色

    [button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];

    

    /*  Events 事件 !!!

     

     UIControlEventTouchUpInside

     UIControlEventTouchUpOutside

     UIControlEventTouchDragInside

     UIControlEventTouchDragOutside

     

     */

    //异步编程模型

    //添加无参的button事件

    //    [button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];

    

    //添加带参数的button事件

    //传递的参数就是添加事件的对象

    //(点击并在按钮范围内松手)

    [button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

    

    button.backgroundColor = [UIColor cyanColor];

    

    [self.window addSubview:button];

    

    

    //system不支持自定义的图片

    //使用自定义的图片的button,要使用custom样式!!!

    UIButton *imageBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    imageBtn.backgroundColor = [UIColor blackColor];

    imageBtn.frame = CGRectMake(50, 150, 100, 100);

    //获取图片

    // 1.png可以不写拓展名  jpg必须写

    // 2.不支持gif

    // 3.  UIImageView  UIImage 表示图片类

    UIImage *image = [UIImage imageNamed:@"image"];

    //设置button的图片

    [imageBtn setImage:image forState:UIControlStateNormal];

    [imageBtn setImage:[UIImage imageNamed:@"image2"] forState:UIControlStateSelected];

    [imageBtn setTitle:@"xxxxxxxx" forState:UIControlStateNormal];

    [imageBtn addTarget:self action:@selector(imageChange:) forControlEvents:UIControlEventTouchUpInside];

    [self.window addSubview:imageBtn];

    

   

    

    UIButton *imgBtn1 = [UIButton buttonWithType:UIButtonTypeCustom];

    imgBtn1.backgroundColor = [UIColor blackColor];

    imgBtn1.frame = CGRectMake(50, 300, 100, 100);

    //设置背景图片

    [imgBtn1 setBackgroundImage:image forState:UIControlStateNormal];

    [imgBtn1 setTitle:@"xxxxxxx" forState:UIControlStateNormal];

    [self.window addSubview:imgBtn1];

    

    /*

     backgroundImage  image的区别

     1.background 伸缩图片, image只有小于图片时伸缩

     2.background 文字浮于图片上方

     image  文字和图片水平并列

     */

    

    

    return YES;

}

- (void)imageChange:(UIButton *)button

{

    //    if (button.isSelected)

    //    {

    //        button.selected = NO;

    //    }

    //    else

    //    {

    //        button.selected = YES;

    //    }

    //

    button.selected = !button.isSelected;

    

#if 0

    static BOOL flag = NO;

    NSString *imageName = nil;

    if (flag)

    {

        imageName = @"image";

        

        //        flag = NO;

    }

    else

    {

        imageName = @"image2";

        

        //        flag = YES;

    }

    UIImage *image = [UIImage imageNamed:imageName];

    [button setImage:image forState:UIControlStateNormal];

    flag = !flag;

#endif

    

}

- (void)click:(UIButton *)button

{

    //获取button的标题, titleLabel只读

    NSLog(@"%@", button.titleLabel.text);

    

    //删除一个事件, 跟添加的内容相同

    [button removeTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

    

}

- (void)click

{

    NSLog(@"click");

}

原文地址:https://www.cnblogs.com/chunji/p/5257452.html