1. 程式人生 > >實用知識:UIButton 圖片在上文字在下

實用知識:UIButton 圖片在上文字在下

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