iOS 按鈕圖片和文字位置的各種設置

按鈕設置title和image默認格式就是圖片在左文字向右 ?開發中往往不盡人意

[but setTitle:[_dateForm stringFromDate:[NSDate date]] forState:UIControlStateNormal];

[but setImage:[UIImage imageNamed:@"xiala"] forState:UIControlStateNormal];



可以通過重寫UIButton的LayoutSubViews來改成我們希望看到的布局



創建繼承UIButton子類

.h文件如下

#importtypedef NS_ENUM(NSInteger, UIMyDefindButtonImageType) {

UIMyDefindButtonImageTypeNormal = 0,//系統默認類型 左圖片 右文字

UIMyDefindButtonImageTypeTop,//上圖片 下文字

UIMyDefindButtonImageTypeRight,//右圖片 左文字

UIMyDefindButtonImageTypeBottom//下圖片 上文字

};

@interface MyDefindButton : UIButton

@property (nonatomic,assign) UIMyDefindButtonImageType myDefindType;

@end


.m文件如下

#import "MyDefindButton.h"

#define Jianju 2 //圖片和文字之間的間距

@implementation MyDefindButton

- (void)layoutSubviews{

[super layoutSubviews];

CGRect titleF = self.titleLabel.frame;

CGRect imageF = self.imageView.frame;

switch (self.myDefindType) {

case UIMyDefindButtonImageTypeNormal:

//不設置即為默認設置 ?當然設置文字與圖片之間的間距也是沒用的 ~~

break;

case UIMyDefindButtonImageTypeTop:{

CGRect newImageRect;

newImageRect.origin.x = self.width/2-(imageF.size.width/2);

newImageRect.origin.y = self.height/2 - ((imageF.size.height+Jianju+titleF.size.height)/2);

newImageRect.size.width = imageF.size.width;

newImageRect.size.height = imageF.size.height;

self.imageView.frame = newImageRect;

self.titleLabel.frame = CGRectMake(self.width/2-(titleF.size.width/2), self.imageView.bottom+Jianju, titleF.size.width, titleF.size.height);

}

break;

case UIMyDefindButtonImageTypeRight:{

titleF.origin.x = self.width/2-((titleF.size.width + imageF.size.width+Jianju)/2);

self.titleLabel.frame = titleF;

imageF.origin.x = CGRectGetMaxX(titleF) + 3;

self.imageView.frame = imageF;

}

break;

case UIMyDefindButtonImageTypeBottom:{

CGRect newTitleRect;

newTitleRect.origin.x = self.width/2-(titleF.size.width/2);

newTitleRect.origin.y = self.height/2 - ((imageF.size.height+Jianju+titleF.size.height)/2);

newTitleRect.size.width = titleF.size.width;

newTitleRect.size.height = titleF.size.height;

self.titleLabel.frame = newTitleRect;

self.imageView.frame = CGRectMake(self.width/2-(imageF.size.width/2), self.titleLabel.bottom+Jianju, imageF.size.width, imageF.size.height);

}

break;

default:

break;

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容