iphone6 和 iphone6 plus 屏幕适配问题

苹果IOS8系统会根据APP的启动图来判断开发者是否对iPhone6和6plus大屏幕进行适配,有两种方法设置启动图:第一:用Xcode生成的LaunchScreen.xib进行启动图设置;第二:将launchImage所需要的各种屏幕启动图进行设置。





iPhone 6+除外,其他所有iPhone的PPI是一致的,都是326,用@2x的素材。
但是6+的实际DPI是401,理论上苹果应该用401/326 * @2x=@2.46x的素材。但是这个奇葩的比例对开发者而言很难切图。所以苹果为方便开发者用的是@3x的素材,然后再缩放到@2.46x上,实际上是缩放到2.46/3=83%。实际上苹果选取了一个接近比例的87%。
这样算下来,物理分辨率和虚拟分比率的比例是87%,也就是1920/0.87=2208,1080/0.87=1242.
好处就是开发者更方便,比如准备素材时,字号可以直接调成3x的。

Iphone 6 PLUS 按照实际的PPI以及物理点尺寸只能显示这么多像素(1920*1080),更准确的应该是 宽度401/163*414=1018.49 高度 401/163*736 = 1810.65 


//屏幕宽度

#define ScreenWidth  [UIScreen mainScreen].bounds.size.width

//屏幕高度

#define ScreenHeight  [UIScreen mainScreen].bounds.size.height

//视图在不同屏幕下宽度放大比率 (以320为基准)

#define WidthRate  ((int)ScreenWidth == 320 ? 1.0:(((int)ScreenWidth == 375) ? (750.0/640):(1242.0/640*2.0/3)))

//视图在不同屏幕下高度放大比率 (以568为基准)

#define HeightRate  (((int)ScreenHeight == 480 || (int)ScreenHeight == 568) ? 1.0:(((int)ScreenHeight == 667) ? (1334.0/1136):(2208.0/1136*2.0/3)))

//修复视图位置 大小

- (void)fixView:(UIView *)view

{

    if (view.subviews.count != 0) {

        for (UIView *v in view.subviews) {

            [self fixView:v];

        }

    }else{

        view.frame = CGRectMake(view.frame.origin.x*WidthRate, view.frame.origin.y*HeightRate, view.frame.size.width*WidthRate, view.frame.size.height*HeightRate);

         NSLog(@"修复后    %f   %f   %f   %f", view.frame.origin.x,view.frame.origin.y, view.bounds.size.width,view.bounds.size.height);

    }

}

//修正文字大小

- (float)fixTextSize:(float)size

{

    NSLog(@"%f", WidthRate*size);

    return WidthRate*size;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值