UIButton 的image title 的位置都是可以调整的,具体如何调整可以按照下面的步骤
1、设置内容的水平垂直位置
self.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
self指的是UIButton对象,这是继承自UIButon的方法里面或者给UIButton添加扩展方法里面。
通过这样的设置可以使得imageView显示在UIButton对象的左上角,titleLabel显示在imageView的右边
2、调整imageView居中
CGFloat btn_width = self.frame.size.width;
self.imageEdgeInsets = UIEdgeInsetsMake(10, (btn_width - self.imageView.frame.size.width)/2, 0, 0);
3、调整 titleLabel居中
CGFloat btn_width = self.frame.size.width;
self.titleEdgeInsets = UIEdgeInsetsMake(self.imageView.frame.size.height + vSpace+10, - self.imageView.frame.size.width+(btn_width/2-self.titleLabel.frame.size.width/2), 0, 0);
通过减去 imageView的宽度使titleLabel处在左上角,让后将label移植中心。
经过以上三步就可以使imageView 、titleLabelLabel 居中,其它的显示形式一样可以参照以上的设置。
博主将其整理成了方法,就不需要每次都写了
- (void) setImageAndTitleCenterWithVerticalGapSpace:(CGFloat) vSpace imageTopSpace:(CGFloat) iSpace {
self.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
CGFloat btn_width = self.frame.size.width;
CGFloat iTop = iSpace;
self.imageEdgeInsets = UIEdgeInsetsMake(iTop, (btn_width - self.imageView.frame.size.width)/2, 0, 0);
// self.titleEdgeInsets = UIEdgeInsetsMake(self.imageView.frame.size.height + vSpace+iTop, - self.imageView.frame.size.width+(btn_width/2-self.titleLabel.frame.size.width/2), 0, 0);
// 使用中发现对于label的width取值不准确,遂通过计算一次获取,准确
CGSize size = [self.titleLabel sizeThatFits:CGSizeMake(CGRectGetWidth(self.frame), CGRectGetHeight(self.frame))];
self.titleEdgeInsets = UIEdgeInsetsMake(CGRectGetHeight(self.imageView.frame)+ vSpace + iTop, - CGRectGetWidth(self.imageView.frame) + (CGRectGetWidth(self.frame) - size.width)/2, 0, 0);
}
vSpace imageView与titleLabel垂直间隔
iSpace imageView 距离 top的间隔