当前位置: 移动技术网 > IT编程>移动开发>IOS > ios 开发中UIBottom的image的上下左右方向排列实现方法

ios 开发中UIBottom的image的上下左右方向排列实现方法

2018年09月12日  | 移动技术网IT编程  | 我要评论

周苏华,4399洛克王国龙鳞套装,白隼

ios 开发中uibottom的image的上下左右方向排列实现方法,效果图:

\

主要代码:继承于uibottom,主要修改titleedgeinsets和imageedgeinsets 属性

customizebtn.h

 

#import 

typedef ibinspectable ns_enum(nsuinteger, customizebtnimageposition) {
    customizebtnimagepositiontop, // image在上,label在下
    customizebtnimagepositionleft, // image在左,label在右
    customizebtnimagepositionbottom, // image在下,label在上
    customizebtnimagepositionright // image在右,label在左
};

ib_designable
@interface customizebtn : uibutton
@property(nonatomic,unsafe_unretained)ibinspectable nsuinteger imageposition;
@property(nonatomic,unsafe_unretained)ibinspectable nsuinteger space;

@end

 

customizebtn.m

 

#import "customizebtn.h"

@implementation customizebtn

- (void)drawrect:(cgrect)rect {
    [self btnimageposition:self.imageposition imagetitlespace:self.space];
}

-(void)setimageposition:(nsuinteger)imageposition {
    _imageposition = imageposition;
    [self btnimageposition:imageposition imagetitlespace:self.space];
}

-(void)setspace:(nsuinteger)space {
    _space = space;
    [self btnimageposition:self.imageposition imagetitlespace:space];
}

- (void)btnimageposition:(customizebtnimageposition)style
                        imagetitlespace:(cgfloat)space {
    
    cgfloat imagewith = self.imageview.frame.size.width;
    cgfloat imageheight = self.imageview.frame.size.height;
    
    cgfloat labelwidth = 0.0;
    cgfloat labelheight = 0.0;
    if ([uidevice currentdevice].systemversion.floatvalue >= 8.0) {
        // 由于ios8中titlelabel的size为0,用下面的这种设置
        labelwidth = self.titlelabel.intrinsiccontentsize.width;
        labelheight = self.titlelabel.intrinsiccontentsize.height;
    } else {
        labelwidth = self.titlelabel.frame.size.width;
        labelheight = self.titlelabel.frame.size.height;
    }
    
    uiedgeinsets imageedgeinsets = uiedgeinsetszero;
    uiedgeinsets labeledgeinsets = uiedgeinsetszero;
    
    switch (style) {
        case customizebtnimagepositiontop:
        {
            imageedgeinsets = uiedgeinsetsmake(-labelheight-space/2.0, 0, 0, -labelwidth);
            labeledgeinsets = uiedgeinsetsmake(0, -imagewith, -imageheight-space/2.0, 0);
        }
            break;
        case customizebtnimagepositionleft:
        {
            imageedgeinsets = uiedgeinsetsmake(0, -space/2.0, 0, space/2.0);
            labeledgeinsets = uiedgeinsetsmake(0, space/2.0, 0, -space/2.0);
        }
            break;
        case customizebtnimagepositionbottom:
        {
            imageedgeinsets = uiedgeinsetsmake(0, 0, -labelheight-space/2.0, -labelwidth);
            labeledgeinsets = uiedgeinsetsmake(-imageheight-space/2.0, -imagewith, 0, 0);
        }
            break;
        case customizebtnimagepositionright:
        {
            imageedgeinsets = uiedgeinsetsmake(0, labelwidth+space/2.0, 0, -labelwidth-space/2.0);
            labeledgeinsets = uiedgeinsetsmake(0, -imagewith-space/2.0, 0, imagewith+space/2.0);
        }
            break;
        default:
            break;
    }
    
    self.titleedgeinsets = labeledgeinsets;
    self.imageedgeinsets = imageedgeinsets;
}

@end

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网