您的位置:首页 > 移动开发 > IOS开发

iOS自定义Button如何在按钮中把文字放左边,图片放右边

2015-07-10 13:00 453 查看
废话不说~~这次直接上代码

//
// JSSignupSortButton.m
// JSmaster
//
// Created by jyd on 15/7/10.
// Copyright (c) 2015年 JYD. All rights reserved.
//

#import "JSSignupSortButton.h"

#define JSButtonImageW ScreenWidth/4+10

@implementation JSSignupSortButton

+(instancetype)buttonInstance
{
return [[self
alloc]init];
}

-(instancetype)initWithFrame:(CGRect)frame
{
self = [super
initWithFrame:frame];
if (self) {
//高亮的时候不要自动调整图标
self.adjustsImageWhenHighlighted =
NO;
self.titleLabel.font = [UIFont
boldSystemFontOfSize:18];
self.imageView.contentMode =
UIViewContentModeLeft;
self.titleLabel.textAlignment =
NSTextAlignmentRight;
[self
setTitleColor:[UIColor
whiteColor] forState:UIControlStateNormal];
}

return
self;
}

-(void)setHighlighted:(BOOL)highlighted
{

}

/**
* 自定义按钮图片的frame
*
* @param contentRect
*
* @return
*/
-(CGRect)imageRectForContentRect:(CGRect)contentRect
{
CGFloat imageY =
0;
CGFloat imageW =
JSButtonImageW;
CGFloat imageX = contentRect.size.width -
JSButtonImageW;
CGFloat imageH = contentRect.size.height;

return
CGRectMake(imageX, imageY, imageW, imageH);
}

/**
* 自定义按钮标题的frame
*
* @param contentRect
*
* @return
*/
-(CGRect)titleRectForContentRect:(CGRect)contentRect
{
CGFloat titleY =
0;
CGFloat titleW = contentRect.size.width -
JSButtonImageW;
CGFloat titleX =
0;
CGFloat titleH = contentRect.size.height;

return
CGRectMake(titleX, titleY, titleW, titleH);
}

/**
* 根据Title设定自己的宽度
*
* @param title
* @param state
*/
-(void)setTitle:(NSString *)title forState:(UIControlState)state
{
CGSize titleSize = [title
sizeWithAttributes:@{NSFontAttributeName:
self.titleLabel.font}];
CGFloat titleW = titleSize.width;

CGRect frame =
self.frame;
frame.size.width = titleW +
JSButtonImageW + 5;
self.frame = frame;

[super
setTitle:title forState:state];
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: