关闭

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

标签: Button自定义Button
4115人阅读 评论(0) 收藏 举报
分类:

废话不说~~这次直接上代码


//

//  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


2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:63975次
    • 积分:1127
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:143篇
    • 译文:1篇
    • 评论:5条
    最新评论