- iOS轻量级屏幕以及字体适配,支持iPhoneX、XS、XSMax、XR等机型适配。
- 使用方便、操作简单、集成快捷等优点
- pod 'TXAdapter', '~> 0.0.2'
/** 适配手机类型 */
typedef NS_ENUM(NSInteger,TXAdapterPhoneType) {
/** iPhone3GS_4_4S */
TXAdapterPhoneType_iPhone3GS_4_4S = 0,
/** iPhone5_5C_5S_5SE */
TXAdapterPhoneType_iPhone5_5C_5S_5SE = 1,
/** iPhone6_6S_7_8 */
TXAdapterPhoneType_iPhone6_6S_7_8 = 2,
/** iPhone6Plus_6SPlus_7Plus_8Plus */
TXAdapterPhoneType_iPhone6Plus_6SPlus_7Plus_8Plus = 3,
/** iPhoneX_XS */
TXAdapterPhoneType_iPhoneX_XS = 4,
/** iPhoneXSMax_XR */
TXAdapterPhoneType_iPhoneXSMax_XR = 5,
/** 其他 */
TXAdapterPhoneTypeOther = 6,
};
/** 所需适配机型-屏幕宽 */
UIKIT_EXTERN CGFloat const SCREEN_WIDTH_iPhone3GS_4_4S;
UIKIT_EXTERN CGFloat const SCREEN_WIDTH_iPhone5_5C_5S_5SE;
UIKIT_EXTERN CGFloat const SCREEN_WIDTH_iPhone6_6S_7_8;
UIKIT_EXTERN CGFloat const SCREEN_WIDTH_iPhone6Plus_6SPlus_7Plus_8Plus;
UIKIT_EXTERN CGFloat const SCREEN_WIDTH_iPhoneX_XS;
UIKIT_EXTERN CGFloat const SCREEN_WIDTH_iPhoneXSMax_XR;
/** 所需适配机型-屏幕高 */
UIKIT_EXTERN CGFloat const SCREEN_HEIGHT_iPhone3GS_4_4S;
UIKIT_EXTERN CGFloat const SCREEN_HEIGHT_iPhone5_5C_5S_5SE;
UIKIT_EXTERN CGFloat const SCREEN_HEIGHT_iPhone6_6S_7_8;
UIKIT_EXTERN CGFloat const SCREEN_HEIGHT_iPhone6Plus_6SPlus_7Plus_8Plus;
UIKIT_EXTERN CGFloat const SCREEN_HEIGHT_iPhoneX_XS;
UIKIT_EXTERN CGFloat const SCREEN_HEIGHT_iPhoneXSMax_XR;
/** 屏幕宽度 */
static inline CGFloat tScreenWidth() {
return [UIScreen mainScreen].bounds.size.width;
}
/** 幕高度 */
static inline CGFloat tScreenHeight() {
return [UIScreen mainScreen].bounds.size.height;
}
/** 当前屏幕类型 */
static inline TXAdapterPhoneType tCurrentType() {
if (tScreenHeight() == SCREEN_HEIGHT_iPhone3GS_4_4S) return TXAdapterPhoneType_iPhone3GS_4_4S;
if (tScreenHeight() == SCREEN_HEIGHT_iPhone5_5C_5S_5SE) return TXAdapterPhoneType_iPhone5_5C_5S_5SE;
if (tScreenHeight() == SCREEN_HEIGHT_iPhone6_6S_7_8) return TXAdapterPhoneType_iPhone6_6S_7_8;
if (tScreenHeight() == SCREEN_HEIGHT_iPhone6Plus_6SPlus_7Plus_8Plus) return TXAdapterPhoneType_iPhone6Plus_6SPlus_7Plus_8Plus;
if (tScreenHeight() == SCREEN_HEIGHT_iPhoneX_XS) return TXAdapterPhoneType_iPhoneX_XS;
if (tScreenHeight() == SCREEN_HEIGHT_iPhoneXSMax_XR) return TXAdapterPhoneType_iPhoneXSMax_XR;
return TXAdapterPhoneTypeOther;
}
/** 屏幕适配 */
@interface TXAdapter : NSObject
/** 屏幕默认类型 默认为TXAdapterPhoneType_iPhone6_6S_7_8 */
@property(nonatomic)TXAdapterPhoneType defaultType;
/** 屏幕宽度 */
@property(nonatomic,readonly)CGFloat defaultScreenWidth;
/** 屏幕高度 */
@property(nonatomic,readonly)CGFloat defaultScreenHeight;
/** 共享适配器 */
+ (instancetype)shareAdapter;
@end
/**
注:屏幕及字体是以屏幕宽度来适配的
*/
/** 真实字体大小 */
static inline CGFloat tRealFontSize(CGFloat defaultSize) {
if ([TXAdapter shareAdapter].defaultType == tCurrentType())
return defaultSize;
return tScreenWidth() / [TXAdapter shareAdapter].defaultScreenWidth * defaultSize;
}
/** 真实长度 */
static inline CGFloat tRealLength(CGFloat defaultLength) {
if ([TXAdapter shareAdapter].defaultType == tCurrentType())
return defaultLength;
return tScreenWidth()/[TXAdapter shareAdapter].defaultScreenWidth * defaultLength;
}
- 导入头文件 <TXAdapter.h> 直接使用tRealLength()、tRealFontSize()...即可
- (void)viewDidLoad {
[super viewDidLoad];
UIView * view=[[UIView alloc]initWithFrame:CGRectMake(0, tRealLength(80), tRealLength(50), tRealLength(50))];
NSLog(@"真实Y:%f",tRealLength(80));
NSLog(@"真实W_H:%f",tRealLength(50));
view.backgroundColor=[UIColor redColor];
[self.view addSubview:view];
NSLog(@"当前设备");
switch (tCurrentType()) {
case TXAdapterPhoneType_iPhone3GS_4_4S:
NSLog(@"TXAdapterPhoneType_iPhone3GS_4_4S");
break;
case TXAdapterPhoneType_iPhone5_5C_5S_5SE:
NSLog(@"TXAdapterPhoneType_iPhone5_5C_5S_5SE");
break;
case TXAdapterPhoneType_iPhone6_6S_7_8:
NSLog(@"TXAdapterPhoneType_iPhone6_6S_7_8");
break;
case TXAdapterPhoneType_iPhone6Plus_6SPlus_7Plus_8Plus:
NSLog(@"TXAdapterPhoneType_iPhone6Plus_6SPlus_7Plus_8Plus");
break;
case TXAdapterPhoneType_iPhoneX_XS:
NSLog(@"TXAdapterPhoneType_iPhoneX_XS");
break;
case TXAdapterPhoneType_iPhoneXSMax_XR:
NSLog(@"TXAdapterPhoneType_iPhoneXSMax_XR");
break;
case TXAdapterPhoneTypeOther:
break;
default:
break;
}
}
2019-01-08 14:50:07.804936+0800 TXAdapterDemo[367:299716] 真实Y:88.320000
2019-01-08 14:50:07.805175+0800 TXAdapterDemo[367:299716] 真实W_H:55.200000
2019-01-08 14:50:07.805400+0800 TXAdapterDemo[367:299716] 当前设备
2019-01-08 14:50:07.805509+0800 TXAdapterDemo[367:299716] TXAdapterPhoneType_iPhoneXSMax_XR