UIButton 图片按钮(图片显示不出来?) 、事件处理

1. 创建一个按钮

-(void)createUIRectButton{
    //创建一个button对象,根据类型创建button,圆角类型的button
    //通过类方法来创建buttonWithType:类名+方法名
    //button不能通过alloc init来分配内存,button的内存是自己管理的
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    
    //设置button按钮的位置
    btn.frame = CGRectMake(100, 100, 100, 40);
    //设置按钮的文字内容
    //@parameter
    //P1:字符串类型,显示到按钮上的文字
    //P2:设置文字显示的状态类型:UIControlStateNormal正常状态 UIControlStateHighlighted按下状态
    [btn setTitle:@"button1" forState:UIControlStateNormal];
    [btn setTitle:@"button pressed" forState:UIControlStateHighlighted];
    
    //设置按下状态的颜色
    btn.backgroundColor = [UIColor grayColor];
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [btn setTitleColor:[UIColor orangeColor] forState:UIControlStateHighlighted];
    
    //设置按钮的风格颜色,优先级低于titleColor
    [btn setTintColor:[UIColor whiteColor]];
    //修改字体,titleLabel:UILabel控件
    btn.titleLabel.font = [UIFont systemFontOfSize:18];
    
    [self.view addSubview:btn];
}

2. 创建一个可以显示图片的按钮

-(void)createImageBtn{
    //创建一个自定义类型的button
    UIButton *btnImage = [UIButton buttonWithType:UIButtonTypeCustom];
    btnImage.frame = CGRectMake(100, 200, 100, 100);
    UIImage *icon01 = [UIImage imageNamed:@"icon01"];
    UIImage *icon02 = [UIImage imageNamed:@"icon02"];
//    NSLog(@"jajajajjaaa");
//    btnImage.backgroundColor =[UIColor grayColor];
    [btnImage setImage:icon01 forState:UIControlStateNormal];
    [btnImage setImage:icon02 forState:UIControlStateHighlighted];
    
    [self.view addSubview:btnImage];
}

如果图片显示不了,一般是资源没有引用进来。
解决方案有两种:

  • 如果直接拖动到工程文件夹下,直接调用会找不到资源文件,需要点击工程名,在Build Phases中的Copy Bundle Resources中再添加一次图片,才能引用成功。且引用时需要写资源文件的后缀名!
  • 如果用Assets.xcassets统一管理的话,添加图片文件到其中,并重新命名,就可以直接以该名称引用图片。

现在一般使用第二种。

3. 为按钮添加事件

-(void)createBtn{
    //创建一个圆角按钮
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(100, 100, 80, 40);
    [btn setTitle:@"按钮" forState: UIControlStateNormal];
    //向按钮添加事件函数
    //P1:实现事件函数的对象
    //P2:函数对象,当按钮满足P3事件类型时,调用函数
    //P3:事件处理函数类型
    //UIControlEventTouchUpInside:当手指离开屏幕并且手指位置在按钮范围内触发事件函数
    //UIControlEventTouchUpOutside:手指位置在按钮范围外
    [btn addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside];
    [btn addTarget:self action:@selector(pressBtn) forControlEvents:UIControlEventTouchUpOutside];
    //触碰时调用事件函数
    [btn addTarget:self action:@selector(touchBtn) forControlEvents:UIControlEventTouchDown];
    //可以多个按钮使用同一个函数处理
    UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn2.frame = CGRectMake(100, 300, 50, 40);
    [btn2 setTitle:@"按钮2" forState:UIControlStateNormal];
    [btn2 addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:btn];
    [self.view addSubview:btn2];
    
    //为按钮设置标记值
    btn.tag = 101;
    btn2.tag = 102;
    
}

-(void)pressBtn{
    NSLog(@"按钮被按下");
}
//参数为调用此函数的按钮对象本身
-(void)pressBtn:(UIButton *)btn{
    if(btn.tag == 101){
        NSLog(@"按钮1被触发");
    }
    else
        NSLog(@"按钮2被触发");
}

-(void)touchBtn{
    NSLog(@"touch once");
}
- (void)viewDidLoad {
    [super viewDidLoad];
//    [self createUIRectButton];
    [self createImageBtn];
    [self createBtn];
}

你可能感兴趣的:(UIButton 图片按钮(图片显示不出来?) 、事件处理)