實用知識: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即可

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