Inset、Outset、Offset概念
先理清这几个术语的含义,才真正的理解API里面的那些参数设置之后能产生的作用,先来说说Inset/Outset,感觉这个有点像CSS里的那种padding,比较常用的应该就是UIEdgeInsets这个结构体了,其定义如下:
typedef struct { CGFloat top, left , bottom, right ; } UIEdgeInsets;
Edge inset的值是用于使矩形相对于自身进行变大或变小,这个值为正值的话,就是使得某个边往自身内部移动一定距离(即inset,变小的效果);而负值则代表这个边往自身外部移动一定距离(即outset,变大的效果)
而offset则是简单的相对于某个参照物依照当前的坐标系进行对应的偏移
TabBarItem的图片移位问题
接着说遇到的一个TabBarItem相关的问题,当设置tabbar按钮的图片时,图片经常发生不居中,偏上的情况。
查看了下文档,tabBarItem的imageinsets默认是UIEdgeInsetsZero,所以应该是系统特意这么设置的,估计是为了配合图片下的文字。
那么怎么解决呢?进行相应的移位调整即可,代码如下:
tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);
注意,这里设置inset的时候,top和bottom,left和right一定要配对,否则会发生按钮点击后,图片不断被拉伸的情况。
另外还要注意一点就是:tabbar底部栏的高度默认是49,其中包括像素1的分隔线