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
- UIButton-UIEdgeInsets
- 【转】iOS UIButton(UIEdgeInsets)
- UIButton里三个UIEdgeInsets属性
- UIButton中的三个UIEdgeInsets属性(一)
- UIButton中的三个UIEdgeInsets属性(二)
- UIEdgeInsets
- UIEdgeInsets
- iOS - UIButton(UIEdgeInsets) 设置button上的文字和图片
- 利用UIEdgeInsets属性修改UIButton的图片,文字位置
- 详解iOS中UIButton的三大UIEdgeInsets属性用法
- iOS - UIButton(UIEdgeInsets)/设置button上的文字和图片 在定义位置
- iOS - UIButton(UIEdgeInsets)/设置button上的文字和图片上下垂直居中对齐
- iOS - UIButton(UIEdgeInsets)/设置button上的文字和图片上下垂直居中对齐
- 28.iOS - UIButton(UIEdgeInsets)/设置button上的文字和图片 在定义位置
- iOS - UIButton(UIEdgeInsets)/设置button上的文字和图片 在定义位置
- UIButton的UIEdgeInsets功能:设置button上的文字和图片的位置
- UIButton UIEdgeInsets属性改变原有的imageview和titellabel位置,使其变成上下结构
- iOS - UIButton(UIEdgeInsets)/设置button上的文字和图片上下垂直居中对齐
- linux的/proc是个什么样的文件目录?
- iOS dispatch_source_t
- csv文件,不是excel格式的,不是excel格式的,不是excel格式的,其实csv就是纯文本格式即txt,可以用txt打开
- AWK
- SQL索引一步到位
- UIButton-UIEdgeInsets
- C语言实现进度条彩色变化
- 微信公众号朋友圈压力测试
- 如何禁用win10的数字签名
- 数据对象的强转换
- DialogFragment的使用
- MUI 在上拉加载的容器中手机无法触发click事件
- pandas教程---------DataFrame选择数据(12/4)
- JFRAME的关闭设置