ios 屏幕适配 心得

重点内容
首先 UI设计一般是按照4.7的屏幕设计。
由于 iphone 5 以上 屏幕的比例 相似。只有 4s 屏幕比例比较特殊。
要适配全部机型。我一般都是 在4s上 写一个scrollview,将屏幕 变成与5的大小相同。接下来就简单了

这是一个UIView的类别

这是.h里的内容

+ (CGFloat)Fyh:(CGFloat)yh;
+ (CGFloat)Fxw:(CGFloat)xw;

这是.m里的内容

+ (CGFloat)factorForiPhone5OriPhone4Width
{
    return (CGFloat)320 / 375;
}
+ (CGFloat)factorForiPhone6PWidth
{
    return (CGFloat)414 / 375;
}
+ (CGFloat)factorForiPhone6Width
{
    return 1;
}

+ (CGFloat)Fxw:(CGFloat)xw
{
    switch ((NSInteger)[UIScreen mainScreen].bounds.size.width) {
        case 320:
            return [self factorForiPhone5OriPhone4Width] * xw;
        case 375:
            return [self factorForiPhone6Width]* xw;
        case 414:
            return [self factorForiPhone6PWidth]* xw;
        default:
            return [self factorForiPhone6Width]* xw;
    }
}

+ (CGFloat)factorForiPhone5OriPhone4Height
{
    return (CGFloat)568 / 667;
}
+ (CGFloat)factorForiPhone6PHeight
{
    return (CGFloat)736 / 667;
}
+ (CGFloat)factorForiPhone6Height
{
    return 1;
}

+ (CGFloat)Fyh:(CGFloat)yh
{
    switch ((NSInteger)[UIScreen mainScreen].bounds.size.height) {
        case 480:
            return [self factorForiPhone5OriPhone4Height]*yh;
            break;
        case 568:
            return [self factorForiPhone5OriPhone4Height]*yh;
            break;
        case 667:
            return [self factorForiPhone6Height]*yh;
        case 736:
            return [self factorForiPhone6PHeight]*yh;
        default:
            return [self factorForiPhone6Height]*yh;
    }
}

通常我会写成 宏
这里的 传入的参数 直接就是 iPhone6 下的 坐标 和 宽高

//屏幕适配
#define SFWX(width)             [UIView Fxw:width]
#define SFHY(height)           [UIView Fyh:height]

调用:
在需要 适配的地方 直接 调用宏定义即可。

  UIView * backView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SFWX(320), SFHY(350))];

猜你喜欢

转载自blog.csdn.net/lwq718691587/article/details/50856069