您的位置:首页 > 移动开发 > IOS开发

iOS纯代码手动适配(5,6,6P)

2016-06-13 16:12 351 查看
首先,我么我们要观察一下5,6和6Plus的尺寸比例关系

    机型                  屏幕宽高比
iPhone5            320/568=0.563
iPhone6            375/667=0.562
iPhone6P          414/736=00.5625  

很明显能看出这三种屏幕的尺寸宽高比是差不多的,因此可以在5的基础上,按比例放大来适配6和6Plus的屏幕。

在AppDelegate.h中

@property float autoSizeScaleX;

@property float autoSizeScaleY;
在AppDelegate.m中

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

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

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];

 

    if(ScreenHeight > 480){

    myDelegate.autoSizeScaleX = ScreenWidth/320;

    myDelegate.autoSizeScaleY = ScreenHeight/568;

    }else{

    myDelegate.autoSizeScaleX = 1.0;

    myDelegate.autoSizeScaleY = 1.0;

    }

}

 因为iPhone4s屏幕的高度是480,因此当屏幕尺寸大于iPhone4时,autoSizeScaleX和autoSizeScaleY即为当前屏幕和iPhone5尺寸的宽高比。比如,

如果是5,autoSizeScaleX=1,autoSizeScaleY=1;

如果是6,autoSizeScaleX=1.171875,autoSizeScaleY=1.17429577;

如果是6Plus,autoSizeScaleX=1.29375,autoSizeScaleY=1.2957;

现在我们获取了比例关系后,先来看一下如何解决代码设置界面时的适配。

CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)这个方法使我们常用的设置尺寸的方法,现在我设置了一个类似于这样的方法。

在.m文件中

UIImageView *imageview = [[UIImageView alloc] initWithFrame:CGRectMake1(100, 100, 50, 50)];

 

CG_INLINE CGRect

CGRectMake1(CGFloat x, CGFloat y, CGFloat width, CGFloat height)

{

AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];

CGRect rect;

rect.origin.x = x * myDelegate.autoSizeScaleX; rect.origin.y = y * myDelegate.autoSizeScaleY;

rect.size.width = width * myDelegate.autoSizeScaleX; rect.size.height = height * myDelegate.autoSizeScaleY;

return rect;

}
  这样,这个imageview在5,6和6Plus的位置和尺寸比例都是一样的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: