在項目的開發中,其他控件不管在IB里邊還是純代碼形式中都能很簡單的做到自適應屏幕的大小,但往往會忽略掉字體大小的適應,我們的UI是以6sPlus屏幕為基準設計的頁面,我前期只是做了控件的自適應,以為字體影響不大,后來在5s上一試,簡直慘不忍睹。在網上找了好多方法,感覺都不好用,被逼無奈(人都是逼出來的)只能自己想一個辦法了,沒想到自己設計的方法簡單好用(自認為,大神勿噴。。),好了,不說廢話了,showTime!
先說一下思路。
一、先建一個UIVIewController的類目。(沒錯就是類目)
類目的.h文件
@interface UIViewController (baseMethod)//括號里邊的是我取的類目名字
//自適應寬度的
- (CGFloat)autoScaleW:(CGFloat)w;
//自適應高度的
- (CGFloat)autoScaleH:(CGFloat)h;
@end
.m文件
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
@interface UIViewController ()
@end
@implementation UIViewController (baseMethod)
#pragma mark - ScaleSize
//說明一下我是以6sPlus為設計基準的,所以是除以414和736 的 ,你們以哪個屏幕大小設計的,就除以哪個屏幕的寬高。
//相信里邊的計算公式都能看懂吧(不懂的轉行吧。。。)
//想要字體的自適應用下邊的任何一個方法都行
//其實不止的字體的適應,以前計算位置、大小的數子都可以用這個來轉換(具體怎么用后邊會說)
- (CGFloat)autoScaleW:(CGFloat)w{
return w * (kScreenWidth / 414.0f);
}
- (CGFloat)autoScaleH:(CGFloat)h{
return h * (kScreenHeight / 736.0f);
}
二、把類目的頭文件導入.pch文件中,導入之后,所有的UIViewcontroller都可以用類目里邊的方法了(別說不懂、不懂的可以查查。pch文件的作用和創建方法。非常好用!!)
//類目
#import "UIViewController+baseMethod.h"
#import "UITableViewCell+baseMethod.h"
#import "UIView+baseMethod.h"
上邊有其他兩個頭文件是我創建的在UIView里邊和cell里邊用的。創建方法和我前面說過的UItableView的類目方法一樣,里邊的方法也一樣,很簡單的
三、具體用法了
cmLabel.font = [UIFont systemFontOfSize:autoScaleW(25)];
看到這里你們懂了沒有。有什么問題可以找我討論。(其實類目很強大的、很多方法都可以創建在類目里邊。期待你的發現)
在之后的日子里、我會把我在開發中遇到問題和解決方法都整理出來、歡迎大家的討論和提出意見!?
謝謝