iOS屏幕尺寸适配
2019-08-15 本文已影响0人
黄定师
屏幕适配方法
针对不同屏幕尺寸的适配,主要有3种方式:
1.不同屏幕尺寸下,元素的尺寸是固定的;
2.不同屏幕尺寸下,元素的尺寸改变一个delta值;
3.不同屏幕尺寸下,元素的尺寸随屏幕尺寸缩放。
常用宏
这里记录一些适配中经常用到的宏。
2.不同屏幕尺寸下,元素的尺寸改变一个delta值
// 尺寸改变一个固定的delta值
#define IS_LANDSCAPE UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)
#define SCREEN_WIDTH (IS_LANDSCAPE ? [UIScreen mainScreen].bounds.size.height : [UIScreen mainScreen].bounds.size.width)
#define UI(x) UIAdapter(x)
#define UIRect(x,y,width,height) UIRectAdapter(x,y,width,height)
static inline CGFloat UIAdapter(CGFloat x) {
CGFloat deltaX = 0;
if (x > SCREEN_WIDTH) {
deltaX = 2.0;
} else if (x < SCREEN_WIDTH) {
deltaX = -2.0;
}
return x + deltaX;
}
static inline CGRect UIRectAdapter(CGFloat x,CGFloat y,CGFloat width,CGFloat height) {
return CGRectMake(UIAdapter(x), UIAdapter(y), UIAdapter(width), UIAdapter(height));
}
3.不同屏幕尺寸下,元素的尺寸随屏幕尺寸缩放
// 随屏幕缩放
#define IS_LANDSCAPE UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)
#define SCREEN_WIDTH (IS_LANDSCAPE ? [UIScreen mainScreen].bounds.size.height : [UIScreen mainScreen].bounds.size.width)
#define UI(x) UIAdapter(x)
#define UIRect(x,y,width,height) UIRectAdapter(x,y,width,height)
static inline CGFloat UIAdapter(CGFloat x) {
CGFloat scale = SCREEN_WIDTH / 375.0;
return scale * x;
}
static inline CGRect UIRectAdapter(CGFloat x,CGFloat y,CGFloat width,CGFloat height) {
return CGRectMake(UIAdapter(x), UIAdapter(y), UIAdapter(width), UIAdapter(height));
}