iOS屏幕适配(尺寸适配)

Posted 徐家汇123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS屏幕适配(尺寸适配)相关的知识,希望对你有一定的参考价值。

 

屏幕适配在用Masonry、或者其他的感觉有点用不习惯,屏幕尺寸适配是我在前辈哪儿雪来的,简单分享一下我的写法,不成熟之处望多多指教,仅供参考:建议跟着代码敲一遍,以后自己用者熟悉方便,原理也很简单;废话有点多了,上

 

创建项目-创建PCH文件:若要创建.pch , 在other里选择 PCH file,并需要修改一下设置。在build settings 里设置 Precompile Prefix Header的值为YES,并设置Prefix Header的路径。

创建一个扩展文件UIView+CreaFream.h,(如何创建扩展文件:创建一个objective-c file , 可以选择 category, extension ,protocol, empty 文件。选category 就能建立类别。)再不会了看网址 http://blog.csdn.net/idoshi201109/article/details/51735461

 

擦,差点忘了 PCH里边的东西了

.pch

#ifndef PrefixHeader_pch
#define PrefixHeader_pch

//判断ios版本
#define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0 )


#import "UIView+CreaFream.h"

#define IPHONE4 ScreenRect.size.width ==320 && ScreenRect.size.height ==480

#define IPHONE5 ScreenRect.size.width ==320 && ScreenRect.size.height ==568

#define IPHONE6 ScreenRect.size.width ==375 && ScreenRect.size.height ==667

#define IPHONE6p ScreenRect.size.width ==414 && ScreenRect.size.height ==736

//#define iPhone7 iPhone7P 自己补充,不过和6的尺寸一样的


#define MAS_SHORTHAND
#define MAS_SHORTHAND_GLOBALS




#endif /* PrefixHeader_pch */

 

.h

#import <UIKit/UIKit.h>

@interface UIView (CreaFream)

//只需一个设置间隔 大小的方法
+(CGRect)GetRectWithX:(CGFloat)x Y:(CGFloat)y Width:(CGFloat)W Heigth:(CGFloat)H;

@end

  

.m

#import "UIView+CreaFream.h"

@implementation UIView (CreaFream)

//实现方法
+(CGRect)GetRectWithX:(CGFloat)x Y:(CGFloat)y Width:(CGFloat)W Heigth:(CGFloat)H{
    
    CGRect temptect = CGRectZero;
   
//个人喜欢以iPhone 为基准 进行比例大小的对比

    if (IPHONE6) {
        temptect = CGRectMake(x,y, W, H);
        
    }else if ((IPHONE4)||(IPHONE5)){
        
        CGFloat Xscole = 320/375.0;
        CGFloat Yscole = 480/667.0;
        
        temptect = CGRectMake(x*Xscole, y*Yscole, W*Xscole, Yscole*H);
        
        
    }else if (IPHONE6p){
        
        CGFloat Xscole = 414/375.0;
        CGFloat Yscole = 736/667.0;
        
        temptect = CGRectMake(x*Xscole, y*Yscole, W*Xscole, Yscole*H);
        
    }
   
    
    return temptect;
}
@end

  

 

就是这样了,在使用的时候,具体就是这样的

 

//在创建基于 UIView 的试图控件的时候,Frame先不设定,如在创建一个UIImageView的时候:frame 之间用UIView 调用,就可以适应其他屏幕了

 UIImageView * imgView = [[UIImageView alloc] initWithFrame:[UIView GetRectWithX:30 Y:30 Width:100 Heigth:100]];
        

  

 

以上是关于iOS屏幕适配(尺寸适配)的主要内容,如果未能解决你的问题,请参考以下文章

iOS设计尺寸375*812怎么适配安卓

Android 屏幕适配屏幕适配基础概念 ① ( Android 与 iOS 屏幕宽高比种类 | 屏幕像素密度 DPI )

iOS App Icon启动图尺寸配置适配iPhone XS XR XS Max等

适配iOS 7 和iOS 8屏幕尺寸宏定义

android屏幕适配做哪几个尺寸

IOS屏幕的适配