iOS UIButton图片文字位置随意放置
iOS UIButton图片文字位置随意放置
记忆淡忘 发表于7个月前
iOS UIButton图片文字位置随意放置
  • 发表于 7个月前
  • 阅读 8
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

通过继承UIButton 重写LayoutSubViews实现 

.h文件如下

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSInteger, UIMyDefindButtonImageType) {

    

    UIMyDefindButtonImageTypeNormal = 0,//系统默认类型 左图片 右文字

    

    UIMyDefindButtonImageTypeTop,//上图片 下文字

    

    UIMyDefindButtonImageTypeRight,//右图片 左文字

    

    UIMyDefindButtonImageTypeBottom//下图片 上文字

    

};

@interface MyDefindButton : UIButton

 

@property (nonatomic,assign) UIMyDefindButtonImageType myDefindType;

 

@end

 

.m文件如下

#import "MyDefindButton.h"

 

#define Jianju 2 //图片和文字之间的间距

 

@implementation MyDefindButton

 

- (void)layoutSubviews{

    

    [super layoutSubviews];

    

    CGRect titleF = self.titleLabel.frame;

    CGRect imageF = self.imageView.frame;

    

    switch (self.myDefindType) {

        case UIMyDefindButtonImageTypeNormal:

            

            break;

            

        case UIMyDefindButtonImageTypeTop:{

            

            CGRect newImageRect;

            

            newImageRect.origin.x = self.width/2-(imageF.size.width/2);

            

            newImageRect.origin.y = self.height/2 - ((imageF.size.height+Jianju+titleF.size.height)/2);

            

            newImageRect.size.width = imageF.size.width;

            

            newImageRect.size.height = imageF.size.height;

            

            self.imageView.frame = newImageRect;

            

            self.titleLabel.frame = CGRectMake(self.width/2-(titleF.size.width/2), self.imageView.bottom+Jianju, titleF.size.width, titleF.size.height);

            

        }

            break;

        case UIMyDefindButtonImageTypeRight:{

            

            titleF.origin.x = self.width/2-((titleF.size.width + imageF.size.width+Jianju)/2);

            

            self.titleLabel.frame = titleF;

            

            imageF.origin.x = CGRectGetMaxX(titleF) + 3;

            self.imageView.frame = imageF;

            

        }

            break;

            

        case UIMyDefindButtonImageTypeBottom:{

            

            CGRect newTitleRect;

            

            newTitleRect.origin.x = self.width/2-(titleF.size.width/2);

            

            newTitleRect.origin.y = self.height/2 - ((imageF.size.height+Jianju+titleF.size.height)/2);

            

            newTitleRect.size.width = titleF.size.width;

            

            newTitleRect.size.height = titleF.size.height;

            

            self.titleLabel.frame = newTitleRect;

            

            self.imageView.frame = CGRectMake(self.width/2-(imageF.size.width/2), self.titleLabel.bottom+Jianju, imageF.size.width, imageF.size.height);

            

        }

            break;

            

        default:

            break;

    }

    

}

 

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect {

    // Drawing code

}

*/

 

@end

 

共有 人打赏支持
粉丝 7
博文 47
码字总数 6967
×
记忆淡忘
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: