UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right);
官方给出的解释是:为按钮或视图创建边缘间距。
间距是矩形周围的边距。 正值表示更接近矩形中心的边距,而负值表示远离中心的边距。
上面的图片来自于一叶博客
我的理解是 top、left、bottom以及right的值代表当前边界与当前矩形中心的相对位移情况,正值代表在原来基础上靠近矩形中心方向移动,负值代表远离矩形中心方向移动;
[button setTitleEdgeInsets:UIEdgeInsetsMake(0, 10, 0,-10)];
又如
[button setTitleEdgeInsets:UIEdgeInsetsMake(0, 20, 0,0)];
或者
[button setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 0,-20)];
上述三条语句具有相同的效果,均表示按钮文字在原基础上往右移动10;
个人理解,正确用法为top和bottom为一对,right和left为一对,用时互为相反数(或者两者符号不同也行)。
若出现两者符号相同,如:
[button setTitleEdgeInsets:UIEdgeInsetsMake(0, 50, 0,50)];
仅限right和left在数值超过一定的值后,可以裁剪按钮的文字。
需注意:若bottom和right两者符号相同,当两者相同时,即使其足够大,也不会有任何效果,如下面语句,不会出现任何变化
[button setTitleEdgeInsets:UIEdgeInsetsMake(300, 0, 300,0)];