您的位置:首页 > 其它

交换button中图片和按钮的位置

2015-12-07 21:14 288 查看
自定义button中有两个方法:

- (CGRect)titleRectForContentRect:(CGRect)contentRect{

             //控制button中label的frame

}

- (CGRect)imageRectForContentRect:(CGRect)contentRect{

             //控制button中imageView的fram

}
contentRect为按钮自己的边框

例:

左为系统button的效果     右为自定义的button实现效果

   

 
        


实现方式为:

#import "CaiZhongButton.h"

@interface
CaiZhongButton()

@property(nonatomic,strong)NSFont *titleFont;

@end

@implementation CaiZhongButton

-(void)awakeFromNib{

    self.titleFont=[UIFont
systemFontOfSize:16];

    self.titleLabel.font=self.titleFont;

    //设置图片居中

    self.imageView.contentMode=UIViewContentModeCenter;

}

-(CGRect)titleRectForContentRect:(CGRect)contentRect{

    CGFloat titleX=0;

    CGFloat titleY=0;

    //获取button的title文字尺寸

    NSDictionary *attrs=@{NSFontAttributeName:self.titleFont};

    CGFloat titleW;

    if (ios7) {

        titleW=[self.currentTitle
boundingRectWithSize:CGSizeMake(MAXFLOAT,
MAXFLOAT)options:NSStringDrawingU
4000
sesLineFragmentOrigin
attributes:attrs context:nil].size.width;

    }else{

        titleW=[self.currentTitle
sizeWithFont:self.titleFont].width;

    }

    CGFloat titleH=contentRect.size.height;

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

}

-(CGRect)imageRectForContentRect:(CGRect)contentRect{

    CGFloat imageW=30;

    CGFloat imageX=contentRect.size.width-imageW;

    CGFloat imageY=0;

    CGFloat imageH=contentRect.size.height;

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

}

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