前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS调整按纽图片文字title位置的代码

iOS调整按纽图片文字title位置的代码

原创
作者头像
用户8671053
修改2021-11-01 09:19:13
8960
修改2021-11-01 09:19:13
举报
文章被收录于专栏:码农的生活码农的生活

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

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

代码语言:javascript
复制
    //

    //  SuperButton.h

    //  SuperButton  #import <UIKit/UIKit.h>

@interface SuperButton : UIButton  

@end  </pre> 
 
 
 
 实现文件 
 
  
   
        //  
    //  SuperButton.m  
    //  SuperButton  
    //  
    //  

    #import "SuperButton.h"  
    #import "UtilsFunctions.h"  
    @interface SuperButton ()  
    {  
        CGRect boundingRect;  

    }  

    @end  

    @implementation SuperButton  
    //自定义的初始化方法  
    - (instancetype)initWithFrame:(CGRect)frame  
    {  
        self = [super initWithFrame:frame];  
        if (self)  
        {  

            [self setTitle:@"项目介绍" forState:UIControlStateNormal];  
            [self.titleLabel setFont:[UIFont boldSystemFontOfSize:font]];  
            [self setBackgroundImage:[UIImage imageNamed:@"cpxq_shang@3x.png"] forState:UIControlStateNormal];  
            [self setImage:[UIImage imageNamed:@"cpxq_jiantou2@3x.png"] forState:UIControlStateNormal];  
            boundingRect=[self.titleLabel.text boundingRectWithSize:CGSizeMake(320,font) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:font]} context:nil];  
        }  
        return self;  
    }    
 
    
   
  
 
 
  
   
        1.重写方法,改变 图片的位置  在  titleRect..方法后执行  
    - (CGRect)imageRectForContentRect:(CGRect)contentRect  
    {  
        CGFloat imageX=self.frame.size.width/2+boundingRect.size.width/2;  
        UIScreen *s=[UIScreen mainScreen];  
        CGRect rect=s.bounds;  
        CGFloat imageY=contentRect.origin.y+14;  
        CGFloat width=24;  
        CGFloat height=24;  
        return CGRectMake(imageX, imageY, width, height);  

    }  
    2.改变title文字的位置,构造title的矩形即可  
    - (CGRect)titleRectForContentRect:(CGRect)contentRect  
    {  

        CGFloat imageX=(self.frame.size.width-boundingRect.size.width)/2;  
        CGFloat imageY=contentRect.origin.y+10;  
        CGFloat width=220;  
        CGFloat height=25;  
        return CGRectMake(imageX, imageY, width, height);  

    }  

    @end    
 
    
   
  
 
 
  
   
   我们只要重写 上述的两个方法,就可以实现对  button按钮中的图片和文字的位置的调整   
   
  
 
 
  
   
   注意: 
   
 1.ios7和ios8系统上 上述两个方法 运行的次数会有差异,可以设置标志位,或者自定义一个 button(不要集成button)   
   
  
 
 
  
   
   2.代码是经过删减的,大家关键是重写上面的两个方法,重新绘制矩形,即可  

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档