关闭

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

538人阅读 评论(0) 收藏 举报
分类:

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即可

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:76826次
    • 积分:2094
    • 等级:
    • 排名:第18234名
    • 原创:630篇
    • 转载:3篇
    • 译文:0篇
    • 评论:1条