实用知识:UIButton 图片在上文字在下

http://blog.csdn.net/dolacmeng/article/details/48373769

iOS默认的UIButton是图片在左文字在右,但是很多时候需求是图片在上文字在下(如效果图1、效果图2),因此想到,通过写一个JXButton继承自UIButton,并重写相关方法即可,以后项目中需要用的话就直接使用JXButton就行了。
(*以前用的另外一种方法,每次都需要写代码,使用不方便:http://blog.csdn.net/dolacmeng/article/details/45537525

新建一个类JXButton,继承于UIButton,以下是JXButtom.h的代码:

[objc] view plain copy
#import <UIKit/UIKit.h>  

@interface JXButton : UIButton  

@end  

JXButtom.m的代码:

[objc] view plain copy
//  
//  JXButton.m  
//  HXSD  
//  
//  Created by JackXu on 15/8/17.  
//  Copyright (c) 2015年 BFMobile. All rights reserved.  
//  

#import "JXButton.h"  
#import "NSString+Extension.h"  

@implementation JXButton  

-(id)initWithCoder:(NSCoder *)aDecoder{  
    if (self=[super initWithCoder:aDecoder]) {  
        self.titleLabel.textAlignment = NSTextAlignmentCenter;  
    }  
    return self;  
}  

-(id)initWithFrame:(CGRect)frame{  
    if (self=[super initWithFrame:frame]) {  
        self.titleLabel.textAlignment = NSTextAlignmentCenter;  
    }  
    return self;  
}  

-(CGRect)titleRectForContentRect:(CGRect)contentRect{  
    CGFloat titleX = 0;  
    CGFloat titleY = contentRect.size.height *0.7;  
    CGFloat titleW = contentRect.size.width;  
    CGFloat titleH = contentRect.size.height - titleY;  
    return CGRectMake(titleX, titleY, titleW, titleH);  
}  

-(CGRect)imageRectForContentRect:(CGRect)contentRect{  
    CGFloat imageW = CGRectGetWidth(contentRect);  
    CGFloat imageH = contentRect.size.height * 0.7;  
    return CGRectMake(0, 0, imageW, imageH);  
}  

@end  

使用:
(1)storyboard中:选中button,将Class设置为JXButton:

(2)如果是代码创建Button,将原来的UIButton改为JXButton即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章