UIButton标题、图片的各种排列

下面是对UIButton的图文排列的一个简易封装。

添加了一个对大图的处理的接口:如果要显示的图片过大,可以先设置比例对其缩放显示,再来进行排列。

UIButton+ImageAndTitle.h

#import <UIKit/UIKit.h>

@interface UIButton (ImageAndTitle)

/**
 *  缩放图片(主要是针对大图显示不完全,就先缩放)
 *  times : 倍数
 */
- (void)zoomImage:(CGFloat)times;

/**
 *  图片、文字居中
 *
 */
- (void)setImageAndTitleCenter;

/**
 *  上下居中,图片在上,文字在下
 *  space : 图文间距
 */
- (void)setImageUp:(CGFloat)space;

/**
 *  上下居中,图片在上,文字在下
 *  默认间距为 6.0
 */
- (void)setImageUp;

/**
 *  上下居中,图片在下,文字在上
 *  space : 图文间距
 */
- (void)setImageDown:(CGFloat)space;

/**
 *  上下居中,图片在下,文字在上
 *  默认间距为 6.0
 */
- (void)setImageDown;

/**
 *  左右居中,图片在左,文字在右
 *  space : 图文间距
 */
- (void)setImageLeft:(CGFloat)space;

/**
 *  左右居中,图片在左,文字在右
 *  默认间距为 6.0
 */
- (void)setImageLeft;

/**
 *  上下居中,图片在右,文字在左
 *  space : 图文间距
 */
- (void)setImageRight:(CGFloat)space;

/**
 *  上下居中,图片在右,文字在左
 *  默认间距为 6.0
 */
- (void)setImageRight;

/**
 *  文字居中,图片在左
 *  space : 图文间距
 */
- (void)setTitleCenterAndImageLeft:(CGFloat)space;

/**
 *  文字居中,图片在左
 *  默认间距为 6.0
 */
- (void)setTitleCenterAndImageLeft;

/**
 *  文字居中,图片在右
 *  space : 图文间距
 */
- (void)setTitleCenterAndImageRight:(CGFloat)space;

/**
 *  文字居中,图片在右
 *  默认间距为 6.0
 */
- (void)setTitleCenterAndImageRight;


@end


 UIButton+ImageAndTitle.m

#import "UIButton+ImageAndTitle.h"

#define DEFULT_SPACE    6.0f

@implementation UIButton (ImageAndTitle)

- (void)zoomImage:(CGFloat)times
{
    UIImage *image = self.imageView.image;
    if (image != nil) {
        [self setImage:[self scaleImage:image toScale:times] forState:UIControlStateNormal];
    }
}

- (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize
{
    UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize));
    [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return scaledImage;
}
                                
- (void)setImageAndTitleCenter
{
    CGSize titleSize = self.titleLabel.frame.size;
    
    self.imageEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, -titleSize.width);
    
    CGSize imageSize = self.imageView.frame.size;
    
    self.titleEdgeInsets = UIEdgeInsetsMake(0.0, -imageSize.width, 0.0, 0.0);
}

- (void)setImageUp:(CGFloat)space
{
    CGSize imageSize = self.imageView.frame.size;
    
    self.titleEdgeInsets = UIEdgeInsetsMake(0.0, -imageSize.width, -(imageSize.height + space / 2), 0.0);
    
    CGSize titleSize = self.titleLabel.frame.size;
    
    self.imageEdgeInsets = UIEdgeInsetsMake(-(titleSize.height + space / 2), 0.0, 0.0, -titleSize.width);
}

- (void)setImageUp
{
    [self setImageUp:DEFULT_SPACE];
}

- (void)setImageDown:(CGFloat)space
{
    CGSize imageSize = self.imageView.frame.size;
    
    self.titleEdgeInsets = UIEdgeInsetsMake(0.0, -imageSize.width, (imageSize.height + space / 2), 0.0);
    
    CGSize titleSize = self.titleLabel.frame.size;
    
    self.imageEdgeInsets = UIEdgeInsetsMake((titleSize.height + space / 2), 0.0, 0.0, -titleSize.width);
}

- (void)setImageDown
{
    [self setImageDown:DEFULT_SPACE];
}

- (void)setImageLeft:(CGFloat)space
{
    self.titleEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, -space / 2);
    
    self.imageEdgeInsets = UIEdgeInsetsMake(0.0, -space / 2, 0.0, 0.0);
}

- (void)setImageLeft
{
    [self setImageLeft:DEFULT_SPACE];
}

- (void)setImageRight:(CGFloat)space
{
    CGSize imageSize = self.imageView.frame.size;
    
    self.titleEdgeInsets = UIEdgeInsetsMake(0.0, -(imageSize.width * 2 + space / 2), 0.0, 0.0);
    
    CGSize titleSize = self.titleLabel.frame.size;
    
    self.imageEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, -(titleSize.width * 2 + space / 2));
}

- (void)setImageRight
{
    [self setImageRight:DEFULT_SPACE];
}

- (void)setTitleCenterAndImageLeft:(CGFloat)space
{
    CGSize imageSize = self.imageView.frame.size;
    
    self.titleEdgeInsets = UIEdgeInsetsMake(0.0, -imageSize.width, 0.0, 0.0);
    
    self.imageEdgeInsets = UIEdgeInsetsMake(0.0, -(space + imageSize.width), 0.0, 0.0);
}

- (void)setTitleCenterAndImageLeft
{
    [self setTitleCenterAndImageLeft:DEFULT_SPACE];
}

- (void)setTitleCenterAndImageRight:(CGFloat)space
{
    CGSize imageSize = self.imageView.frame.size;
    
    self.titleEdgeInsets = UIEdgeInsetsMake(0.0, -imageSize.width, 0.0, 0.0);
    
    CGSize titleSize = self.titleLabel.frame.size;
    
    self.imageEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, -(space + 2 * titleSize.width + imageSize.width));
}

- (void)setTitleCenterAndImageRight
{
    [self setTitleCenterAndImageRight:DEFULT_SPACE];
}
@end




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值