iOS 自定义button

这次写的并不算是一种功能,它只是方便我们去快速的铺界面,先来看下效果图

创建这种button,多数人会用image+label等组合模式来创建,这种创建的方法不仅费时,还比较费力,今天我带来的是自定义button,仅需要两行代码,就能实现这种效果


首先,创建个自定义button类

//
//  BackGroundButton.h
//  Life
//
//  Created by Amydom on 16/7/5.
//  Copyright © 2016年 Amydom. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface BackGroundButton : UIButton

@end

//
//  BackGroundButton.m
//  Life
//
//  Created by Amydom on 16/7/5.
//  Copyright © 2016年 Amydom. All rights reserved.
//

#import "BackGroundButton.h"

@implementation BackGroundButton

//title的位置
- (CGRect)titleRectForContentRect:(CGRect)contentRect{
    return CGRectMake(0, 53, 375/3, 20);
}
//背景的位置
- (CGRect)backgroundRectForBounds:(CGRect)bounds{
    return CGRectMake((375/3 - 31) / 2, 13, 31, 31);
}

@end

下面在viewcontroller里使用就可以了

//
//  ViewController.m
//  Life
//
//  Created by Amydom on 16/7/5.
//  Copyright © 2016年 Amydom. All rights reserved.
//

#import "ViewController.h"
#import "BackGroundButton.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor colorWithWhite:0.925 alpha:1.000];
    [self createMySubViews];

}


- (void)createMySubViews{
    //banner
    UIImageView *bannerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 64, 375, 200)];
    bannerImageView.image = [UIImage imageNamed:@"banner.png"];
    [self.view addSubview:bannerImageView];
    
    //放button的背景view
    UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(0, bannerImageView.frame.size.height + bannerImageView.frame.origin.y + 20, 375, 200)];
    backView.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:backView];
    //存放列表图片和标题
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"myAssetsButtonImageAndTitle" ofType:@"plist"];
    NSArray *imageAndtiltleArray = [[NSArray alloc] initWithContentsOfFile:plistPath];
    for (int i = 0; i < [imageAndtiltleArray count]; i++) {
        //自定义button
         BackGroundButton *btn = [BackGroundButton buttonWithType:UIButtonTypeCustom];
        btn.frame = CGRectMake(375 / 3 * (i % 3), backView.frame.size.height / 2 * (i / 3), 375 / 3, backView.frame.size.height / 2);
        [btn setBackgroundImage:[UIImage imageNamed:[imageAndtiltleArray objectAtIndex:i][@"image"]] forState:UIControlStateNormal];
        [btn setTitle:[imageAndtiltleArray objectAtIndex:i][@"title"] forState:UIControlStateNormal];
        [btn setTitleColor:[UIColor colorWithRed:58 / 255.0 green:58 / 255.0 blue:58 / 255.0 alpha:1.0] forState:UIControlStateNormal];
        btn.titleLabel.textAlignment = NSTextAlignmentCenter;
        btn.titleLabel.font = [UIFont systemFontOfSize:12.0f];
        btn.tag = i;
        [btn addTarget:self action:@selector(setButtonBackGroundColor:) forControlEvents:UIControlEventTouchUpInside];
        
        //设置边界的宽度
        [btn.layer setBorderWidth:0.3];
        
        //设置按钮的边界颜色
        [btn.layer setBorderColor:[UIColor colorWithWhite:0.925 alpha:1.000].CGColor];
        
        [backView addSubview:btn];
    }
    
    
    
}

#pragma mark - ClickEvent
- (void)setButtonBackGroundColor:(id)sender {
    UIButton *AssetsBtn = (UIButton *) sender;
    switch (AssetsBtn.tag) {
        case 0: {
          //话费充值界面
            
        } break;
        case 1: {
            //流量充值界面
           
        } break;
        case 2: {
            //预约挂号界面
      
            
        } break;
        case 3: {
            //客运购票界面
      
            
        } break;
        case 4: {
            //违章查询界面
        
        } break;
        case 5: {
            //更多界面
            
        } break;
 
        default:
            break;
    }
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

这里为了方便,我把数据存放到pllist文件里了,这样,这种图文的button就创建完成了,感觉还是很简单的(这个自定义button类可以直接放到工程中使用..)




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值