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));
}
上一篇 下一篇

猜你喜欢

热点阅读