- UIButton 调整ImageView和TitileLable
- 调整UIButton中自带的imageView和titleLab
- UIButton中imageView和titleLabel的位置
- iOS UIButton用约束调整imageView和title
- UIImageView和UIButton的边框设置
- UIButton 如何变相获取 titleLabel.frame
- iOS 调整UIButton 图片(imageView)与文字(
- UIButton 布局 imageView 和 titleLab
- UIButton 的EdgeInsets
- UIButton UIEdgeInsets imageView
UIButton 调整ImageView和TitileLable的位置
UIButton 默认是图片在左文字在右,但是项目需求往往需要更改其位置格局。UIButton属性中有如下属性可以用来调整图片文字的位置:
@property(nonatomic) UIEdgeInsets titleEdgeInsets;
@property(nonatomic) UIEdgeInsets imageEdgeInsets;
通过这种方式调整也是可行,但是未免太繁琐,所以想到了用分类的方式来实现(非入侵式调整)。下面为图片在上文字在下的分类。
.h文件
#import <UIKit/UIKit.h>
@interface UIButton (VerticalContent)
- (void)virticalContentSpace:(CGFloat)space;
@end
.m文件
#import "UIButton+VerticalContent.h"
@implementation UIButton (VerticalContent)
- (void)virticalContentSpace:(CGFloat)space {
CGSize imgViewSize,titleSize,btnSize;
UIEdgeInsets imageViewEdge,titleEdge;
imgViewSize = self.imageView.bounds.size;
titleSize = self.titleLabel.bounds.size;
btnSize = self.bounds.size;
imageViewEdge = UIEdgeInsetsMake(-(imgViewSize.height + space) * 0.5, 0,
0, - titleSize.width);
[self setImageEdgeInsets:imageViewEdge];
titleEdge = UIEdgeInsetsMake(0, - imgViewSize.width, -(titleSize.height + space) * 0.5, 0.0);
[self setTitleEdgeInsets:titleEdge];
}
@end
使用此分类方法不生效可能原因是:
- 在setFrame方法前调用了分类方法。或者是使用AutoLayout布局。
- 调用分类方法之前没有设置图片 或者 文字。更换图片或者文字后需调用此分类方法。
UIEdgeInsetsMake(top, left, bottom, right)
UIEdgeInsetsMake(x, y, 0 ,0) 和 UIEdgeInsetsMake(0, 0, -x ,-y)等效
网友评论