美文网首页
iOS的iPhone app在iPad下的显示

iOS的iPhone app在iPad下的显示

作者: Zszen | 来源:发表于2018-10-25 02:55 被阅读149次

这是针对ipad上显示iphone游戏展开的研究,比较冷门

  • 上次写的有点蠢了,ipad iphone分辨率虽然机型没有几款,但是他们有正常和缩放(zoomed)模式,导致分辨率其实很难判断。其实适配ipad上的iphone很简单,因为ipad对应的iphone分辨率其实是对应的 [UIScreen mainScreen].bounds.size; 这个绘制区域,以及[[UIScreen mainScreen] scale] 缩放倍率来决定的。
  • 如果像我一样要适配老款游戏对应不同倍率适配不同的ccb文件,其实要对scale进行判断的。一种方法是对不同倍率的ccb采用相同资源进行处理,另一种是对同一套ccb,进行不同倍率的资源适配,第二种显然会将误差放大。
typedef enum {
    ScreenType_NONE=0,
//  ScreenType_iPhone3gs=1<<0,
    ScreenType_iPhone4=1<<1,
    ScreenType_iPhone5=1<<2,
    ScreenType_iPhone8=1<<3,
    ScreenType_iPhone8Plus=1<<4,//6p,7p
    ScreenType_iPhone8PlusZoomed=1<<5,//6pzoomed,7pzoome
    ScreenType_iPhoneX=1<<6,//ScreenType_iPhoneXS
    ScreenType_iPhoneXR=1<<7,
    ScreenType_iPhoneXSMax=1<<8,//
//  ScreenType_iPadSd=1<<15,
//  ScreenType_iPadHd=1<<16,
//  ScreenType_iPad9=1<<17,
//  ScreenType_iPad10=1<<18,
//  ScreenType_iPad12=1<<19,
////    ScreenType_iPad12Zoomed=1<<20,
    ScreenType_All = -1,
    ScreenType_hasCorner = ScreenType_iPhoneX||ScreenType_iPhoneXSMax,
//  ScreenType_isIpad = ScreenType_iPadSd|ScreenType_iPadHd|ScreenType_iPad9|ScreenType_iPad10|ScreenType_iPad12,
//  ScreenType_isIphone = ~ScreenType_isIpad,
}ScreenType;
-(ScreenType)screenType{
    CGSize boundsSize = [UIScreen mainScreen].bounds.size;
    NSInteger scaleFactor = CC_CONTENT_SCALE_FACTOR();
    NSLog(@"boundsSize %@ scaleFactor %d",NSStringFromCGSize(boundsSize),(int)scaleFactor);
    if(CGSizeEqualToSize(boundsSize, CGSizeMake(320, 480))){
        _screenType = ScreenType_iPhone4;
    }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(320, 568))){
        _screenType = ScreenType_iPhone5;
    }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(375, 667))){
        if(scaleFactor==3){
            _screenType = ScreenType_iPhone8PlusZoomed;
        }else {//scaleFactor==2
            _screenType = ScreenType_iPhone8;
        }
    }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(414, 736))){
        _screenType = ScreenType_iPhone8Plus;
    }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(375, 812))){
        _screenType = ScreenType_iPhoneX;
    }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(414, 896))){
        if(scaleFactor==3){
            _screenType = ScreenType_iPhoneXSMax;
        }else if(scaleFactor==2){
            _screenType = ScreenType_iPhoneXR;
        }else{
            _screenType = ScreenType_iPhoneXR;
        }
        //      }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(2048, 2732))){
        //          _screenType = ScreenType_iPad12;
        //      }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(2048, 2732))){
        //          _screenType = ScreenType_iPad12;
        //      }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(1668, 2224))){
        //          _screenType = ScreenType_iPad10;
        //      }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(1536, 2048)) && CGSizeEqualToSize(boundsSize,CGSizeMake(375, 667))){
        //          _screenType = ScreenType_iPad9;
        //      }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(1536, 2048))){
        //          _screenType = ScreenType_iPadHd;
        //      }else if(CGSizeEqualToSize(boundsSize, CGSizeMake(768, 1024))){
        //          _screenType = ScreenType_iPadSd;
    }else{
        _screenType = ScreenType_iPhone4;
    }
    return _screenType;
}

相关文章

网友评论

      本文标题:iOS的iPhone app在iPad下的显示

      本文链接:https://www.haomeiwen.com/subject/ddnftqtx.html