UIButton 调整ImageView和TitileLable的位置

UIButton 调整ImageView和TitileLable的位置

UIButton 默认是图片在左文字在右,但是项目需求往往需要更改其位置格局。UIButton属性中有如下属性可以用来调整图片文字的位置:

@property(nonatomic)          UIEdgeInsets titleEdgeInsets;  
@property(nonatomic)          UIEdgeInsets imageEdgeInsets; 

通过这种方式调整也是可行,但是未免太繁琐,所以想到了用分类的方式来实现(非入侵式调整)。下面为图片在上文字在下的分类。

.h文件

#import <UIKit/UIKit.h>

@interface UIButton (VerticalContent)

- (void)virticalContentSpace:(CGFloat)space;

@end

.m文件

#import "UIButton+VerticalContent.h"

@implementation UIButton (VerticalContent)

- (void)virticalContentSpace:(CGFloat)space {
    
    CGSize imgViewSize,titleSize,btnSize;
    UIEdgeInsets imageViewEdge,titleEdge;
    
    imgViewSize = self.imageView.bounds.size;
    titleSize = self.titleLabel.bounds.size;
    btnSize = self.bounds.size;
    
    imageViewEdge = UIEdgeInsetsMake(-(imgViewSize.height + space) * 0.5, 0,
                                     0, - titleSize.width);
    [self setImageEdgeInsets:imageViewEdge];
    titleEdge = UIEdgeInsetsMake(0, - imgViewSize.width, -(titleSize.height + space) * 0.5, 0.0);
    [self setTitleEdgeInsets:titleEdge];
}
@end

使用此分类方法不生效可能原因是:

  1. 在setFrame方法前调用了分类方法。或者是使用AutoLayout布局。
  2. 调用分类方法之前没有设置图片 或者 文字。更换图片或者文字后需调用此分类方法。

UIEdgeInsetsMake(top, left, bottom, right)

UIEdgeInsetsMake(x, y, 0 ,0) 和 UIEdgeInsetsMake(0, 0, -x ,-y)等效

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容