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

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


//

//  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值