imageInset、titleInset

对于UIbutton的两个属性imageInset、titleInset一直没有太明白,最近研究了一下,对于不对的地方,欢迎指正啊。

首先要理解,这里的(top、left、bottom、right)并不是直接代表距离button的边界距离,而是现在的一个边界距离相对以前的偏移量,系统默认条件下,图片在左,文字在右。

接着就需要计算出原始image的宽高,title的原始位置,以及现在的位置,下面是简单实现的代码:

-(void)test1//图片在左,文字在右

{

self.button1.contentHorizontalAlignment=UIControlContentHorizontalAlignmentRight;

//self.button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

//以上这两个设置都是可以的

CGFloattitleWidth =60;

CGFloatshowImageWidth =30;

CGFloatoriginalImageWidth =self.button1.frame.size.width>ImageWidth?ImageWidth:self.button1.frame.size.width;

CGFloatleftInset = (self.button1.frame.size.width-titleWidth-showImageWidth)/2;

CGFloatrightInset = leftInset;

CGFloattitleOrigionX = originalImageWidth;

[self.button1setImageEdgeInsets:UIEdgeInsetsMake(0, leftInset,0, rightInset+titleWidth)];

[self.button1setTitleEdgeInsets:UIEdgeInsetsMake(0, leftInset+showImageWidth-titleOrigionX,0, rightInset)];

}

实现效果:

-(void)test2//文字在左,图片在右

{

//self.button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;

self.button1.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;

//以上这两种设置都可以

CGFloattitleWidth =60;

CGFloatshowImageWidth =30;

CGFloatoriginalImageWidth =self.button1.frame.size.width>ImageWidth?ImageWidth:self.button1.frame.size.width;

CGFloatleftInset = (self.button1.frame.size.width-titleWidth-showImageWidth)/2;

CGFloatrightInset = leftInset;

CGFloattitleOrigionX = originalImageWidth;

[self.button1setImageEdgeInsets:UIEdgeInsetsMake(0, leftInset+titleWidth,0, rightInset)];

[self.button1setTitleEdgeInsets:UIEdgeInsetsMake(0, leftInset-titleOrigionX,0, rightInset+showImageWidth)];

}

实现效果:

-(void)test3//图片在上,文字在下

{

//self.button2.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;

self.button2.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;

//以上这两个设置都是可以的

CGFloattitleWidth =60;

CGFloattitleHight =20;

CGFloatshowImageWidth =30;

CGFloatshowImageHight = showImageWidth;

CGFloatoriginalImageWidth =self.button2.frame.size.width>ImageWidth?ImageWidth:self.button2.frame.size.width;

CGFloattitleOrigionX = originalImageWidth;

CGFloatimageLeftInset = (self.button2.frame.size.width-showImageWidth)/2;

CGFloatimageRightInset = imageLeftInset;

CGFloattitleLeftInset = (self.button2.frame.size.width-titleWidth)/2;

CGFloattitleRightInset = titleLeftInset;

CGFloattopInset = (self.button2.frame.size.height-showImageHight-titleHight)/2;

CGFloatbottomInset = topInset;

[self.button2setImageEdgeInsets:UIEdgeInsetsMake(topInset,imageLeftInset, titleHight+bottomInset,imageRightInset)];

[self.button2setTitleEdgeInsets:UIEdgeInsetsMake(topInset+showImageHight, titleLeftInset-titleOrigionX, bottomInset, titleRightInset)];

}

实现效果:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • { 11、核心动画 需要签协议,但是系统帮签好 一、CABasicAnimation 1、创建基础动画对象 CAB...
    CYC666阅读 1,579评论 2 4
  • 前言 最近忙完项目比较闲,想写一篇博客来分享一些自学iOS的心得体会,希望对迷茫的你有所帮助。博主非科班出身,一些...
    GitHubPorter阅读 1,451评论 9 5
  • UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,...
    Lsx_f阅读 1,103评论 1 2
  • 公司最近来了一个小姑娘,90后,长得挺漂亮,之前在一家4S店做销售。前段时间隔壁部门招人,家里找了关系,被介绍来做...
    梓涵919阅读 245评论 0 1
  • 根据战隼100天的说法,要养成一个习惯需要大概100天,从今天起开始培养写作的习惯。要想不断精进,必须不断的把...
    羊没吐气阅读 684评论 0 50