美文网首页
UIEdgeInsets

UIEdgeInsets

作者: 一路李花开 | 来源:发表于2018-05-11 11:15 被阅读30次

    也许是因为我总不好理解inset是什么意思,所以每次遇到这个属性,我都得先查一遍,倒不如自己写下来,好好理解。如果这样还是记不住的吧,那记下来,也方便自己查,不用每次都去各种搜了!

    一、UIEdgeInsets

    edge:边缘
    inset:插图、嵌入

    二、UIEdgeInsets 是一个结构体,定义如下:

     typedef struct UIEdgeInsets {
       CGFloat top, left, bottom, right;  
    } UIEdgeInsets;
    

    四个值依次:上、左、下、右,代表的是距离上边界、左边界、下边界、右边界的位移,默认都是0。
    属性的含义:specify amount to inset (positive) for each of the edges. values can be negative to 'outset',也就是设置距离边界的值,一般都用在button上

    三、UIButton的UIEdgeInsets属性

    contentEdgeInsets
    titleEdgeInsets
    imageEdgeInsetss
    
    contentEdgeInsets

    UIButton中有一个UILabel和一个UIImageView。如果给按钮设置contentEdgeInsets属性,就是按钮的内容整体(包含UILabel和UIImageView)进行偏移。

    button.contentEdgeInsets = UIEdgeInsetsMake(10, 10, -10, -10);
    按钮的内容整体向右移动10个像素
    
    titleEdgeInsets & imageEdgeInsets

    看名字就知道,titleEdgeInsets是对UIButton中UILabel起作用的,imageEdgeInsets是对UIButton中UIImageView起作用的。这两个属性一般一起使用。

    那么titleEdgeInsets和imageEdgeInsets分别以什么为标准呢?
    image的UIEdgeInsets属性的top,left,bottom都是相对于按钮的,right是相对于title;
    title的UIEdgeInsets属性的top,bottom,right都是相对于按钮的,left是相对于image;

    这样我们就可以对UIButton中的UILabel和UIImageView进行位置调整。

    1.默认情况:图片在左边,文字在右边
    
    2.图片在右,文字在左
     CGFloat imageWidth = self.allButton.imageView.size.width;
     [self.allButton.titleLabel sizeToFit];
     CGFloat titleWidth =self.allButton.titleLabel.frame.size.width;
     [self.allButton setImageEdgeInsets:UIEdgeInsetsMake(0,titleWidth,0,-titleWidth)];
     [self.allButton setTitleEdgeInsets:UIEdgeInsetsMake(0,-imageWidth,0,imageWidth)];
    
    3.图片在上,文字在下
    self.allButton.imageEdgeInsets = UIEdgeInsetsMake(-imageSize.height/2, titleSize.width/2, imageSize.height/2, -titleSize.width/2);
    self.allButton.titleEdgeInsets = UIEdgeInsetsMake(titleSize.height/2, -imageSize.width/2, -titleSize.height/2, imageSize.width/2);
    
    4.图片在下,文字在在
    self.allButton.titleEdgeInsets = UIEdgeInsetsMake(0, titleSize.width/2, titleSize.height+5, - titleSize.width/2);
    self.allButton.imageEdgeInsets = UIEdgeInsetsMake(imageSize.height+13, self.allButton.bounds.size.width/2 + imageSize.width/2, 0,0);
    

    相关文章

      网友评论

          本文标题:UIEdgeInsets

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