美文网首页
UIButton的UIEdgeInsets属性

UIButton的UIEdgeInsets属性

作者: 星空WU | 来源:发表于2021-01-02 11:20 被阅读0次

UIButton共有三个相关属性:

1.contentEdgeInsets

2.titleEdgeInsets

3.imageEdgeInsets

UIEdgeInsets

它的四个参数:top, left, bottom, right, 分别表示距离上边界,左边界,下边界,右边界的位移,默认值均为0。

注意箭头方向为正方向,相反方向为负方向

contentEdgeInsets

我们都知道,UIButton按钮可以只设置一个UILabel或者一个UIImageView,还可以同时具有UILabel和UIImageView;如果给按钮设置contentEdgeInsets属性,就是按钮的内容整体(包含UILabel和UIImageView)进行偏移。

按钮内容整体向右下分别移动10像素:

Button.contentEdgeInsets=UIEdgeInsetsMake(10,10,-10,-10);

titleEdgeInsets , imageEdgeInsets

这两个属性的效果是相辅相成的。如果给一个按钮同时设置了title和image,他们默认的状态是图片在左,标题在右,而且image和title之间没有空隙;那就这就引出一个问题,title和image的UIEdgeInsets属性分别的相对于谁而言的?

    image的UIEdgeInsets属性的top,left,bottom都是相对于按钮的,right是相对于title;

title的UIEdgeInsets属性的top,bottom,right都是相对于按钮的,left是相对于image;

   1、 title在左,image在右:

        //拿到title和image的大小:

CGSize titleSize=self.pureButton.titleLabel.bounds.size;

CGSize imageSize=self.pureButton.imageView.bounds.size;

//分别设置偏移量:记住偏移量是位移,

有正负,正负是相对谁而言,上面已讲到,否则你会一团雾水

self.pureButton.titleEdgeInsets= UIEdgeInsetsMake(0,-imageSize.width,0,imageSize.width);

self.pureButton.imageEdgeInsets=UIEdgeInsetsMake(0,titleSize.width,0,-titleSize.width);

    以上面self.pureButton.titleEdgeInsets设置中为例,label左移,label左边距是相对于按钮的contentInsets说,按钮的左边距向右为正方向, 相对于按钮左边距是反方向所以为负;而label的右边距是相对于图片的右边距而言,因为imageView的右边距向左是正方向,所以label左移取得是正

    image在上,title在下:

       向右移动的距离是标题宽度的一半,

       向上移动的距离是图片高度的一半

       向左移动的距离是图片宽度的一半,

       向下移动的距离是标题高度的一半

self.pureButton.imageEdgeInsets=UIEdgeInsetsMake(-imageSize.height/2,titleSize.width/2,imageSize.height/2,-titleSize.width/2);

self.pureButton.titleEdgeInsets=UIEdgeInsetsMake(titleSize.height/2,-imageSize.width/2,-titleSize.height/2,imageSize.width/2);

demo链接:https://github.com/qicaitiankong/swiftButton

相关文章

网友评论

      本文标题:UIButton的UIEdgeInsets属性

      本文链接:https://www.haomeiwen.com/subject/gvheoktx.html