iOS 字体适配
2017-06-19 本文已影响387人
焦焦丶
在日常开发中,相信很多小伙伴都有遇到过不同机型字体适配的需求,那么今天我将分享给大家如何通过自定义一个宏来解决所有不同尺寸大小的机型适配问题
AppDelegate.h 里面:
#import <UIKit/UIKit.h>
@interface AppDelegate :UIResponder
@property(strong,nonatomic)UIWindow *window;
-(CGFloat)fontSizeScale:(CGFloat)scale;
@end
AppDelegate.m 里面:
#import "AppDelegate.h"
@interface AppDelegate ()
// 字体的缩放比例
@property(nonatomic,assign)CGFloat fontSize;
@end
以 iPhone7 屏幕尺寸为基础系数,来设置其他屏幕字体的缩放比例
- (void)fontSizeScale{
if (iPhone7P) { // iPhone7P上的字体尺寸
self.fontSize = 1.1;
} else if(iPhone7) { // iPhone7上的字体尺寸
self.fontSize = 1.0;
} else if(iPhoneSE) { // iPhoneSE上的字体尺寸
self.fontSize = 0.9;
} else if(iPhone4s) { // iPhone4s上的字体尺寸
self.fontSize = 0.7;
} else { // 其他设备上的字体尺寸
self.fontSize = 1.5;
}
}
- (CGFloat)fontSizeScale:(CGFloat)scale {
return scale * self.fontSize;
}
程序启动时的方法里面调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 自适应不同屏幕尺寸的字体大小
[self fontSizeScale];
return YES;
}
在.pch文件里面自定义一个宏来调用
#import "AppDelegate.h"
// 自适应字体大小
#define fontSizeScale(size) [(AppDelegate *)[UIApplication sharedApplication].delegate fontSizeScale:size]
/*********** 常用字体大小 ************/
#define DRFont(size) [UIFont systemFontOfSize:fontSizeScale(size)]
/*********** 常用粗体大小 ************/
#define DRBoldFont(size) [UIFont boldSystemFontOfSize:fontSizeScale(size)]
写代码的时候设置字体大小一律用 DRFont(size) 和 DRBoldFont(size)
最后附上不同屏幕尺寸机型判断的宏
/*********** 屏幕宽高 ************/
#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width
#define SCREEN_HEIGHT [[UIScreen mainScreen] bounds].size.height
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_RETINA ([[UIScreen mainScreen] scale] >= 2.0)
#define SCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT))
#define SCREEN_MIN_LENGTH (MIN(SCREEN_WIDTH, SCREEN_HEIGHT))
/*********** 机型判断 ************/
#define iPhone4s (IS_IPHONE && SCREEN_MAX_LENGTH < 568.0)
#define iPhoneSE (IS_IPHONE && SCREEN_MAX_LENGTH == 568.0)
#define iPhone7 (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0)
#define iPhone7P (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0)