iOS 字体自适应屏幕大小
2016-11-01 本文已影响2398人
ZPCoder
在项目的开发中,其他控件不管在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)];
看到这里你们懂了没有。有什么问题可以找我讨论。(其实类目很强大的、很多方法都可以创建在类目里边。期待你的发现)
在之后的日子里、我会把我在开发中遇到问题和解决方法都整理出来、欢迎大家的讨论和提出意见!☺
谢谢