(按钮)上面为图片下部为文字的 按钮 控件


有的时候在做一些基础控件的时候系统的不能满足需要,就需要自己自定义一些控件了,这个按钮是上面显示图片,下半部分显示文字.


#import


@interface CollectView : UIView

@property(nonatomic,copy) NSString* title;

@property(nonatomic,strong) UIColor* titleColor;


+(instancetype) collectView;

-(void) addTarget:(id) target action:(SEL)action;

@end



#import "CollectView.h"

@interface CollectView()

@property(nonatomic,strong) UIButton* topBtn;

@property(nonatomic,strong) UILabel* titleLabel;

@end

@implementation CollectView

-(instancetype)initWithFrame:(CGRect)frame

{

    self=[super initWithFrame:frame];

    if (self) {

        // 添加按钮

        self.topBtn=[[UIButton allocinit];

        [self.topBtn setImage:[UIImage imageNamed:@"collect"]forState:UIControlStateNormal];

        [self.topBtn setAdjustsImageWhenHighlighted:NO];

        

        [self addSubview:self.topBtn];


        // 添加Label

        self.titleLabel=[[UILabel allocinit];

        self.titleLabel.textAlignment=NSTextAlignmentCenter;

        self.titleLabel.font=[UIFont systemFontOfSize:12];

        [self addSubview:self.titleLabel];

    }

    return self;

}


-(void)layoutSubviews

{

    CGFloat W=self.bounds.size.height;

    CGFloat btnX=0;

    CGFloat btnY=0;

    CGFloat btnW=self.bounds.size.width;

    CGFloat btnH=W;

    self.topBtn.frame=CGRectMake(btnX, btnY, btnW, btnH);

    UIEdgeInsets imageInsert=UIEdgeInsetsMake(00, W * 0.330);

    self.topBtn.imageEdgeInsets=imageInsert;

    

    

    CGFloat labelX=0;

    CGFloat labelY=W*0.66;//CGRectGetMaxY(self.topBtn.frame);

    CGFloat labelW=self.bounds.size.width;

    CGFloat labelH=W * 0.33;

    self.titleLabel.frame=CGRectMake(labelX, labelY, labelW, labelH);


}



-(void)setTitle:(NSString *)title

{

    _title=title;

    self.titleLabel.text=title;

}


-(void)setTitleColor:(UIColor *)titleColor

{

    _titleColor=titleColor;

    self.titleLabel.textColor=titleColor;

}


+(instancetype) collectView

{

    return [[self allocinit];

}


-(void) addTarget:(id)target action:(SEL)action

{

    [self.topBtn addTarget:target action:actionforControlEvents:UIControlEventTouchUpInside];


 

}



//在控制器中使用自定义按钮


    CGFloat collectW=50;

        CGFloat collectX=kScreenWidth-kStationDetailBorder-collectW;

    CGFloat collectY=infoLabelY;

    CGFloat collectH=50;

    _collectView=[CollectView collectView];

  _collectView.frame=CGRectMake(collectX, collectY, collectW, collectH);

    _collectView.title=@"收藏";

    [_stationInfoView addSubview:_collectView];

  [_collectView addTarget:self action:@selector(collect)];


你可能感兴趣的:(IOS,自定义控件)