美文网首页
UIButton 调整ImageView和TitileLable

UIButton 调整ImageView和TitileLable

作者: wanmei世界 | 来源:发表于2017-09-07 13:36 被阅读13次

    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)等效

    相关文章

      网友评论

          本文标题:UIButton 调整ImageView和TitileLable

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