iOS开发-调整按钮的图片文字位置

 

iOS开发-调整按钮的图片文字位置 

分类: iOS开发2015-01-20 23:28 673人阅读 评论(0) 收藏 举报

ios 按钮图片文字位置调整button调整image位置

自定义一个button,要调整 button中的image(注意,不是backgroundImage) 和  title 文字的位置,只需要重写  Button类独对应的两个方法即可:

首先,我们来创建一个 SuperButton继承自 UIButton

  1. //  

  2. //  SuperButton.h  

  3. //  SuperButton  

  4. //  

  5. //  Created by  on 14/12/25.  

  6. //  Copyright (c) 2014年  All rights reserved.  

  7. //  

  8.   

  9. #import <UIKit/UIKit.h>  

  10.   

  11. @interface  SuperButton : UIButton  

  12.   

  13. @end   


实现文件

  1. //  

  2. //  SuperButton.m  

  3. //  SuperButton  

  4. //  

  5. //  Created by  on 14/12/25.  

  6. //  Copyright (c) 2014年  All rights reserved.  

  7. //  

  8.   

  9. #import "SuperButton.h"  

  10. #import "UtilsFunctions.h"  

  11. @interface  SuperButton ()  

  12. {  

  13.     CGRect boundingRect;  

  14.          

  15. }  

  16.   

  17. @end   

  18.   

  19. @implementation SuperButton  

  20. //自定义的初始化方法  

  21. - (instancetype)initWithFrame:(CGRect)frame  

  22. {  

  23.     self = [super initWithFrame:frame];  

  24.     if (self)  

  25.     {  

  26.           

  27.         [self setTitle:@"项目介绍" forState:UIControlStateNormal];  

  28.         [self.titleLabel setFont:[UIFont boldSystemFontOfSize:font]];  

  29.         [self setBackgroundImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal];  

  30.         [self setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal];  

  31.         boundingRect=[self.titleLabel.text boundingRectWithSize:CGSizeMake(320,font) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:font]} context:nil];  

  32.     }  

  33.     return self;  

  34. }  

  1. 1.重写方法,改变 图片的位置  在  titleRect..方法后执行  

  2. - (CGRect)imageRectForContentRect:(CGRect)contentRect  

  3. {  

  4.     CGFloat imageX=self.frame.size.width/2+boundingRect.size.width/2;  

  5.     UIScreen *s=[UIScreen mainScreen];  

  6.     CGRect rect=s.bounds;  

  7.     CGFloat imageY=contentRect.origin.y+14;  

  8.     CGFloat width=24;  

  9.     CGFloat height=24;  

  10.     return CGRectMake(imageX, imageY, width, height);  

  11.       

  12. }  

  13. 2.改变title文字的位置,构造title的矩形即可  

  14. - (CGRect)titleRectForContentRect:(CGRect)contentRect  

  15. {  

  16.       

  17.     CGFloat imageX=(self.frame.size.width-boundingRect.size.width)/2;  

  18.     CGFloat imageY=contentRect.origin.y+10;  

  19.     CGFloat width=220;  

  20.     CGFloat height=25;  

  21.     return CGRectMake(imageX, imageY, width, height);  

  22.   

  23. }  

  24.   

  25. @end  

  1. 我们只要重写 上述的两个方法,就可以实现对  button按钮中的图片和文字的位置的调整  

  1. 注意: 1.ios7和ios8系统上 上述两个方法 运行的次数会有差异,可以设置标志位,或者自定义一个 button(不要集成button)  

  1. 2.代码是经过删减的,大家关键是重写上面的两个方法,重新绘制矩形,即可  


你可能感兴趣的:(iOS开发-调整按钮的图片文字位置)