不同模式的选择
This commit is contained in:
@@ -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