實用知識:UIButton 圖片在上文字在下
阿新 • • 發佈:2019-01-01
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即可