不同模式的选择
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// UIButton+ImageTitleStyle.h
|
||||
//
|
||||
// Created by 欧阳大哥 on 14-7-13.
|
||||
// QQ:156355113
|
||||
// Github: https://github.com/youngsoft
|
||||
// Email: obq0387_cn@sina.com
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
/*
|
||||
针对同时设置了Image和Title的场景时UIButton中的图片和文字的关系
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, ButtonImageTitleStyle ) {
|
||||
ButtonImageTitleStyleDefault = 0, //图片在左,文字在右,整体居中。
|
||||
ButtonImageTitleStyleLeft = 0, //图片在左,文字在右,整体居中。
|
||||
ButtonImageTitleStyleRight = 2, //图片在右,文字在左,整体居中。
|
||||
ButtonImageTitleStyleTop = 3, //图片在上,文字在下,整体居中。
|
||||
ButtonImageTitleStyleBottom = 4, //图片在下,文字在上,整体居中。
|
||||
ButtonImageTitleStyleCenterTop = 5, //图片居中,文字在上距离按钮顶部。
|
||||
ButtonImageTitleStyleCenterBottom = 6, //图片居中,文字在下距离按钮底部。
|
||||
ButtonImageTitleStyleCenterUp = 7, //图片居中,文字在图片上面。
|
||||
ButtonImageTitleStyleCenterDown = 8, //图片居中,文字在图片下面。
|
||||
ButtonImageTitleStyleRightLeft = 9, //图片在右,文字在左,距离按钮两边边距
|
||||
ButtonImageTitleStyleLeftRight = 10, //图片在左,文字在右,距离按钮两边边距
|
||||
};
|
||||
|
||||
@interface UIButton (ImageTitleStyle)
|
||||
|
||||
/*
|
||||
调整按钮的文本和image的布局,前提是title和image同时存在才会调整。
|
||||
padding是调整布局时整个按钮和图文的间隔。
|
||||
|
||||
*/
|
||||
-(void)setButtonImageTitleStyle:(ButtonImageTitleStyle)style padding:(CGFloat)padding;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,185 @@
|
||||
//
|
||||
// UIButton+ImageTitleStyle.m
|
||||
//
|
||||
// Created by 欧阳大哥 on 14-7-13.
|
||||
//
|
||||
|
||||
#import "UIButton+ImageTitleStyle.h"
|
||||
|
||||
@implementation UIButton (ImageTitleStyle)
|
||||
|
||||
-(void)setButtonImageTitleStyle:(ButtonImageTitleStyle)style padding:(CGFloat)padding
|
||||
{
|
||||
if (self.imageView.image != nil && self.titleLabel.text != nil)
|
||||
{
|
||||
|
||||
//先还原
|
||||
self.titleEdgeInsets = UIEdgeInsetsZero;
|
||||
self.imageEdgeInsets = UIEdgeInsetsZero;
|
||||
|
||||
CGRect imageRect = self.imageView.frame;
|
||||
CGRect titleRect = self.titleLabel.frame;
|
||||
|
||||
CGFloat totalHeight = imageRect.size.height + padding + titleRect.size.height;
|
||||
CGFloat selfHeight = self.frame.size.height;
|
||||
CGFloat selfWidth = self.frame.size.width;
|
||||
|
||||
switch (style) {
|
||||
case ButtonImageTitleStyleLeft:
|
||||
if (padding != 0)
|
||||
{
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake(0,
|
||||
padding/2,
|
||||
0,
|
||||
-padding/2);
|
||||
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(0,
|
||||
-padding/2,
|
||||
0,
|
||||
padding/2);
|
||||
}
|
||||
break;
|
||||
case ButtonImageTitleStyleRight:
|
||||
{
|
||||
//图片在右,文字在左
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake(0,
|
||||
-(imageRect.size.width + padding/2),
|
||||
0,
|
||||
(imageRect.size.width + padding/2));
|
||||
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(0,
|
||||
(titleRect.size.width+ padding/2),
|
||||
0,
|
||||
-(titleRect.size.width+ padding/2));
|
||||
}
|
||||
break;
|
||||
case ButtonImageTitleStyleTop:
|
||||
{
|
||||
//图片在上,文字在下
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake(((selfHeight - totalHeight)/2 + imageRect.size.height + padding - titleRect.origin.y),
|
||||
(selfWidth/2 - titleRect.origin.x - titleRect.size.width /2) - (selfWidth - titleRect.size.width) / 2,
|
||||
-((selfHeight - totalHeight)/2 + imageRect.size.height + padding - titleRect.origin.y),
|
||||
-(selfWidth/2 - titleRect.origin.x - titleRect.size.width /2) - (selfWidth - titleRect.size.width) / 2);
|
||||
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(((selfHeight - totalHeight)/2 - imageRect.origin.y),
|
||||
(selfWidth /2 - imageRect.origin.x - imageRect.size.width / 2),
|
||||
-((selfHeight - totalHeight)/2 - imageRect.origin.y),
|
||||
-(selfWidth /2 - imageRect.origin.x - imageRect.size.width / 2));
|
||||
|
||||
}
|
||||
break;
|
||||
case ButtonImageTitleStyleBottom:
|
||||
{
|
||||
//图片在下,文字在上。
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake(((selfHeight - totalHeight)/2 - titleRect.origin.y),
|
||||
(selfWidth/2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2,
|
||||
-((selfHeight - totalHeight)/2 - titleRect.origin.y),
|
||||
-(selfWidth/2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2);
|
||||
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(((selfHeight - totalHeight)/2 + titleRect.size.height + padding - imageRect.origin.y),
|
||||
(selfWidth /2 - imageRect.origin.x - imageRect.size.width / 2),
|
||||
-((selfHeight - totalHeight)/2 + titleRect.size.height + padding - imageRect.origin.y),
|
||||
-(selfWidth /2 - imageRect.origin.x - imageRect.size.width / 2));
|
||||
}
|
||||
break;
|
||||
case ButtonImageTitleStyleCenterTop:
|
||||
{
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake(-(titleRect.origin.y - padding),
|
||||
(selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2,
|
||||
(titleRect.origin.y - padding),
|
||||
-(selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2);
|
||||
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(0,
|
||||
(selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2),
|
||||
0,
|
||||
-(selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2));
|
||||
}
|
||||
break;
|
||||
case ButtonImageTitleStyleCenterBottom:
|
||||
{
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake((selfHeight - padding - titleRect.origin.y - titleRect.size.height),
|
||||
(selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2,
|
||||
-(selfHeight - padding - titleRect.origin.y - titleRect.size.height),
|
||||
-(selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2);
|
||||
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(0,
|
||||
(selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2),
|
||||
0,
|
||||
-(selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2));
|
||||
}
|
||||
break;
|
||||
case ButtonImageTitleStyleCenterUp:
|
||||
{
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake(-(titleRect.origin.y + titleRect.size.height - imageRect.origin.y + padding),
|
||||
(selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2,
|
||||
(titleRect.origin.y + titleRect.size.height - imageRect.origin.y + padding),
|
||||
-(selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2);
|
||||
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(0,
|
||||
(selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2),
|
||||
0,
|
||||
-(selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2));
|
||||
}
|
||||
break;
|
||||
case ButtonImageTitleStyleCenterDown:
|
||||
{
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake((imageRect.origin.y + imageRect.size.height - titleRect.origin.y + padding),
|
||||
(selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2,
|
||||
-(imageRect.origin.y + imageRect.size.height - titleRect.origin.y + padding),
|
||||
-(selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2);
|
||||
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(0,
|
||||
(selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2),
|
||||
0,
|
||||
-(selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2));
|
||||
}
|
||||
break;
|
||||
case ButtonImageTitleStyleRightLeft:
|
||||
{
|
||||
//图片在右,文字在左,距离按钮两边边距
|
||||
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake(0,
|
||||
-(titleRect.origin.x - padding),
|
||||
0,
|
||||
(titleRect.origin.x - padding));
|
||||
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(0,
|
||||
(selfWidth - padding - imageRect.origin.x - imageRect.size.width),
|
||||
0,
|
||||
-(selfWidth - padding - imageRect.origin.x - imageRect.size.width));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case ButtonImageTitleStyleLeftRight:
|
||||
{
|
||||
//图片在左,文字在右,距离按钮两边边距
|
||||
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake(0,
|
||||
(selfWidth - padding - titleRect.origin.x - titleRect.size.width),
|
||||
0,
|
||||
-(selfWidth - padding - titleRect.origin.x - titleRect.size.width));
|
||||
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(0,
|
||||
-(imageRect.origin.x - padding),
|
||||
0,
|
||||
(imageRect.origin.x - padding));
|
||||
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
self.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
|
||||
self.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user