UIButton-UIEdgeInsets

来源:互联网 发布:淘宝情趣丝袜女模特 编辑:程序博客网 时间:2024/05/29 17:50
/**top         +下   -上left        +右   -左bottom      +上   -下right       +左   -右**/
同时存在图片和title的情况下,居中  [button setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, -button.titleLabel.intrinsicContentSize.width)];  [button setTitleEdgeInsets:UIEdgeInsetsMake(0, -button.currentImage.size.width, 0, 0)];
////  UIButton+CNMButtonEdgeInsets.h//  ButtonDemo////  Created by gaoshuang  on 2017/12/4.//  Copyright © 2017年 gaoshuang . All rights reserved.//#import <UIKit/UIKit.h>@interface ButEdgeInset:NSObject@property (assign, nonatomic)CGFloat top;@property (assign, nonatomic)CGFloat left;@property (assign, nonatomic)CGFloat bottom;@property (assign, nonatomic)CGFloat right;@property (assign, nonatomic)CGSize sizeButton;@endtypedef void(^ButtonEdgeInset)(UIEdgeInsets edgeInset);@interface UIButton (CNMButtonEdgeInsets)/** ButEdgeInset 距离边框的位置* 每种约束至多设置两个,左上,左下,右上,右下* 约束出现错误,检查是否重复约束或者约束对象错误*/-(void)cnm_set_Title_Image_EdgeInsetWithBlock:(void(^)(ButEdgeInset* edgeInsetTitle,ButEdgeInset* edgeInsetImage))block;@end/**使用 [button cnm_set_Title_Image_EdgeInsetWithBlock:^(ButEdgeInset *edgeInsetTitle, ButEdgeInset *edgeInsetImage) { //只有tittle的情况 //设置距离左边框 edgeInsetTitle.left = 10; //设置左上 edgeInsetTitle.left = 10; edgeInsetTitle.top = 10; 只有Image的情况 设置距离左边框 edgeInsetImage.right = 10; 设置左上 edgeInsetImage.left = 10; edgeInsetImage.top  = 10; 都存在的情况 edgeInsetImage.left = 10; edgeInsetTitle.left = 10; 设置图片左上,文字右下 edgeInsetImage.left = 10; edgeInsetImage.top = 10; edgeInsetTitle.bottom = 10; edgeInsetTitle.right = 10; }]; **/
////  UIButton+CNMButtonEdgeInsets.m//  ButtonDemo////  Created by gaoshuang  on 2DistanceMin17/12/4.//  Copyright © 2DistanceMin17年 gaoshuang . All rights reserved.//#import "UIButton+CNMButtonEdgeInsets.h"@implementation ButEdgeInset@end#define DistanceMin  0.00001 //区分对齐的情况@implementation UIButton (CNMButtonEdgeInsets)-(void)cnm_setImageEdgeInsetWithBlock:(void(^)(ButEdgeInset* edgeInset))block withIsBoth:(BOOL)isBoth{    ButEdgeInset* inset  =[[ButEdgeInset alloc]init];    inset.top = DistanceMin;    inset.left = DistanceMin;    inset.bottom = DistanceMin;    inset.right = DistanceMin;    block(inset);    if (inset.top != DistanceMin && inset.bottom != DistanceMin ) {        NSLog(@"_________Image约束失败____________");    }else if (inset.left != DistanceMin && inset.right != DistanceMin){        NSLog(@"_________Image约束失败____________");    }    if (inset.sizeButton.width == 0 && inset.sizeButton.height == 0 ) {        inset.sizeButton = self.frame.size;    }    if (inset.top != DistanceMin && inset.left != DistanceMin) {        self.imageEdgeInsets = UIEdgeInsetsMake( -(inset.sizeButton.height/2-inset.top-self.currentImage.size.height/2),                                                -(inset.sizeButton.width/2-inset.left-self.currentImage.size.width/2),                                                (inset.sizeButton.height/2-inset.top-self.currentImage.size.height/2),                                                (inset.sizeButton.width/2-inset.left-self.currentImage.size.width/2)+(isBoth?-self.titleLabel.intrinsicContentSize.width:0)                                                );    }else if (inset.top != DistanceMin && inset.right != DistanceMin){        self.imageEdgeInsets = UIEdgeInsetsMake( -(inset.sizeButton.height/2-inset.top-self.currentImage.size.height/2),                                                (inset.sizeButton.width/2-inset.right-self.currentImage.size.width/2),                                                (inset.sizeButton.height/2-inset.top-self.currentImage.size.height/2),                                                -(inset.sizeButton.width/2-inset.right-self.currentImage.size.width/2)+(isBoth?-self.titleLabel.intrinsicContentSize.width:0)                                                );    }else if (inset.bottom != DistanceMin && inset.left != DistanceMin){        self.imageEdgeInsets = UIEdgeInsetsMake( (inset.sizeButton.height/2-inset.bottom-self.currentImage.size.height/2),                                                -(inset.sizeButton.width/2-inset.left-self.currentImage.size.width/2),                                                -(inset.sizeButton.height/2-inset.bottom-self.currentImage.size.height/2),                                                (inset.sizeButton.width/2-inset.left-self.currentImage.size.width/2)+(isBoth?-self.titleLabel.intrinsicContentSize.width:0)                                                );    }else if (inset.bottom != DistanceMin && inset.right != DistanceMin){        self.imageEdgeInsets = UIEdgeInsetsMake( (inset.sizeButton.height/2-inset.bottom-self.currentImage.size.height/2),                                                (inset.sizeButton.width/2-inset.right-self.currentImage.size.width/2),                                                -(inset.sizeButton.height/2-inset.bottom-self.currentImage.size.height/2),                                                -(inset.sizeButton.width/2-inset.right-self.currentImage.size.width/2)+(isBoth?-self.titleLabel.intrinsicContentSize.width:0)                                                );    }else if(inset.top != DistanceMin){        self.imageEdgeInsets = UIEdgeInsetsMake( -(inset.sizeButton.height/2-inset.top-self.currentImage.size.height/2),                                                0,                                                (inset.sizeButton.height/2-inset.top-self.currentImage.size.height/2),                                                0+(isBoth?-self.titleLabel.intrinsicContentSize.width:0)                                                );    }else if (inset.left != DistanceMin){        self.imageEdgeInsets = UIEdgeInsetsMake( 0,                                                -(inset.sizeButton.width/2-inset.left-self.currentImage.size.width/2),                                                0,                                                (inset.sizeButton.width/2-inset.left-self.currentImage.size.width/2)+(isBoth?-self.titleLabel.intrinsicContentSize.width:0)                                                );    }else if (inset.bottom != DistanceMin){        self.imageEdgeInsets = UIEdgeInsetsMake( (inset.sizeButton.height/2-inset.bottom-self.currentImage.size.height/2),                                                0,                                                -(inset.sizeButton.height/2-inset.bottom-self.currentImage.size.height/2),                                                0+(isBoth?-self.titleLabel.intrinsicContentSize.width:0)                                                );    }else if (inset.right != DistanceMin){        self.imageEdgeInsets = UIEdgeInsetsMake( 0,                                                (inset.sizeButton.width/2-inset.right-self.currentImage.size.width/2),                                                0,                                                -(inset.sizeButton.width/2-inset.right-self.currentImage.size.width/2)+(isBoth?-self.titleLabel.intrinsicContentSize.width:0)                                                );    }else{        NSLog(@"_________Image无效约束____________");    }}-(void)cnm_setTitleEdgeInsetWithBlock:(void(^)(ButEdgeInset* edgeInset))block  withIsBoth:(BOOL)isBoth{    ButEdgeInset* inset  =[[ButEdgeInset alloc]init];    inset.top = DistanceMin;    inset.left = DistanceMin;    inset.bottom = DistanceMin;    inset.right = DistanceMin;    block(inset);    if (inset.top != DistanceMin && inset.bottom != DistanceMin ) {        NSLog(@"_________Title约束失败____________");    }else if (inset.left != DistanceMin && inset.right != DistanceMin){        NSLog(@"_________Title约束失败____________ ");    }    if (inset.sizeButton.width == 0 && inset.sizeButton.height == 0 ) {        inset.sizeButton = self.frame.size;    }    if (inset.top != DistanceMin && inset.left != DistanceMin) {        self.titleEdgeInsets = UIEdgeInsetsMake( -(inset.sizeButton.height/2-inset.top-self.titleLabel.intrinsicContentSize.height/2),                                                -(inset.sizeButton.width/2-inset.left-self.titleLabel.intrinsicContentSize.width/2)+(isBoth?-self.currentImage.size.width:0),                                                (inset.sizeButton.height/2-inset.top-self.titleLabel.intrinsicContentSize.height/2),                                                (inset.sizeButton.width/2-inset.left-self.titleLabel.intrinsicContentSize.width/2)                                                );    }else if (inset.top != DistanceMin && inset.right != DistanceMin){        self.titleEdgeInsets = UIEdgeInsetsMake( -(inset.sizeButton.height/2-inset.top-self.titleLabel.intrinsicContentSize.height/2),                                                (inset.sizeButton.width/2-inset.right-self.titleLabel.intrinsicContentSize.width/2)+(isBoth?-self.currentImage.size.width:0),                                                (inset.sizeButton.height/2-inset.top-self.titleLabel.intrinsicContentSize.height/2),                                                -(inset.sizeButton.width/2-inset.right-self.titleLabel.intrinsicContentSize.width/2)                                                );    }else if (inset.bottom != DistanceMin && inset.left != DistanceMin){        self.titleEdgeInsets = UIEdgeInsetsMake( (inset.sizeButton.height/2-inset.bottom-self.titleLabel.intrinsicContentSize.height/2),                                                -(inset.sizeButton.width/2-inset.left-self.titleLabel.intrinsicContentSize.width/2)+(isBoth?-self.currentImage.size.width:0),                                                -(inset.sizeButton.height/2-inset.bottom-self.titleLabel.intrinsicContentSize.height/2),                                                (inset.sizeButton.width/2-inset.left-self.titleLabel.intrinsicContentSize.width/2)                                                );    }else if (inset.bottom != DistanceMin && inset.right != DistanceMin){        self.titleEdgeInsets = UIEdgeInsetsMake( (inset.sizeButton.height/2-inset.bottom-self.titleLabel.intrinsicContentSize.height/2),                                                (inset.sizeButton.width/2-inset.right-self.titleLabel.intrinsicContentSize.width/2)+(isBoth?-self.currentImage.size.width:0),                                                -(inset.sizeButton.height/2-inset.bottom-self.titleLabel.intrinsicContentSize.height/2),                                                -(inset.sizeButton.width/2-inset.right-self.titleLabel.intrinsicContentSize.width/2)                                                );    }else if(inset.top != DistanceMin){        self.titleEdgeInsets = UIEdgeInsetsMake( -(inset.sizeButton.height/2-inset.top-self.titleLabel.intrinsicContentSize.height/2),                                                +(isBoth?-self.currentImage.size.width:0),                                                (inset.sizeButton.height/2-inset.top-self.titleLabel.intrinsicContentSize.height/2),                                                0                                                );    }else if (inset.left != DistanceMin){        self.titleEdgeInsets = UIEdgeInsetsMake( 0,                                                -(inset.sizeButton.width/2-inset.left-self.titleLabel.intrinsicContentSize.width/2)+(isBoth?-self.currentImage.size.width:0),                                                0,                                                (inset.sizeButton.width/2-inset.left-self.titleLabel.intrinsicContentSize.width/2)                                                );    }else if (inset.bottom != DistanceMin){        self.titleEdgeInsets = UIEdgeInsetsMake( (inset.sizeButton.height/2-inset.bottom-self.titleLabel.intrinsicContentSize.height/2),                                                +(isBoth?-self.currentImage.size.width:0),                                                -(inset.sizeButton.height/2-inset.bottom-self.titleLabel.intrinsicContentSize.height/2),                                                0                                                );    }else if (inset.right != DistanceMin){        self.titleEdgeInsets = UIEdgeInsetsMake( 0,                                                (inset.sizeButton.width/2-inset.right-self.titleLabel.intrinsicContentSize.width/2)+(isBoth?-self.currentImage.size.width:0),                                                0,                                                -(inset.sizeButton.width/2-inset.right-self.titleLabel.intrinsicContentSize.width/2)                                                );    }else{        NSLog(@"_________Title无效约束____________");    }}-(void)cnm_set_Title_Image_EdgeInsetWithBlock:(void(^)(ButEdgeInset* edgeInsetTitle,ButEdgeInset* edgeInsetImage))block{    //没有设置title的时候 self.titleLabel.intrinsicContentSize.height ==0   self.titleLabel.intrinsicContentSize.wide == 22    ButEdgeInset* insetTitle  =[[ButEdgeInset alloc]init];    insetTitle.top = DistanceMin;    insetTitle.left = DistanceMin;    insetTitle.bottom = DistanceMin;    insetTitle.right = DistanceMin;    ButEdgeInset* insetImage  =[[ButEdgeInset alloc]init];    insetImage.top = DistanceMin;    insetImage.left = DistanceMin;    insetImage.bottom = DistanceMin;    insetImage.right = DistanceMin;    block(insetTitle,insetImage);    if ((insetTitle.top != DistanceMin || insetTitle.left != DistanceMin ||insetTitle.bottom != DistanceMin || insetTitle.right != DistanceMin) && self.currentImage.size.height != 0&&self.currentImage.size.width !=        0 && (insetImage.top != DistanceMin || insetImage.left != DistanceMin ||insetImage.bottom != DistanceMin || insetImage.right != DistanceMin) && self.titleLabel.intrinsicContentSize.height != 0 && self.titleLabel.intrinsicContentSize.width != 0) {        [self cnm_setTitleEdgeInsetWithBlock:^(ButEdgeInset *edgeInset) {            edgeInset.top =insetTitle.top;            edgeInset.left =insetTitle.left;            edgeInset.bottom =insetTitle.bottom;            edgeInset.right =insetTitle.right;        } withIsBoth:YES];        [self cnm_setImageEdgeInsetWithBlock:^(ButEdgeInset *edgeInset) {            edgeInset.top =insetImage.top;            edgeInset.left =insetImage.left;            edgeInset.bottom =insetImage.bottom;            edgeInset.right =insetImage.right;        } withIsBoth:YES];    }    else if ((insetTitle.top != DistanceMin || insetTitle.left != DistanceMin ||insetTitle.bottom != DistanceMin || insetTitle.right != DistanceMin) &&  (insetImage.top != DistanceMin || insetImage.left != DistanceMin ||insetImage.bottom != DistanceMin || insetImage.right != DistanceMin) ){        if (self.titleLabel.intrinsicContentSize.height == 0 || self.titleLabel.intrinsicContentSize.width == 0 || self.currentImage.size.height == 0||self.currentImage.size.width ==0) {            NSLog(@"_________约束失败:约束值有效,约束对象title或者image不存在____________");        }    }    else if((insetTitle.top != DistanceMin || insetTitle.left != DistanceMin ||insetTitle.bottom != DistanceMin || insetTitle.right != DistanceMin)&& self.titleLabel.intrinsicContentSize.height != 0 && self.titleLabel.intrinsicContentSize.width != 0 && self.currentImage.size.height==0&&self.currentImage.size.width==0){        [self cnm_setTitleEdgeInsetWithBlock:^(ButEdgeInset *edgeInset) {            edgeInset.top =insetTitle.top;            edgeInset.left =insetTitle.left;            edgeInset.bottom =insetTitle.bottom;            edgeInset.right =insetTitle.right;        } withIsBoth:NO];    }else if((insetImage.top != DistanceMin || insetImage.left != DistanceMin ||insetImage.bottom != DistanceMin || insetImage.right != DistanceMin) && self.currentImage.size.height != 0 && self.currentImage.size.width != 0 && self.titleLabel.intrinsicContentSize.width==0){        [self cnm_setImageEdgeInsetWithBlock:^(ButEdgeInset *edgeInset) {            edgeInset.top =insetImage.top;            edgeInset.left =insetImage.left;            edgeInset.bottom =insetImage.bottom;            edgeInset.right =insetImage.right;        } withIsBoth:NO];    }else{        NSLog(@"_________约束失败:约束对象不存在或者约束值无效____________");    }}@end
阅读全文
0 0
原创粉丝点击