iOS屏幕适配-frame布局

如何用frame适配4.0寸,4.7寸,5.5寸的屏幕.

4.0寸 320/568=0.563

4.7寸  375/667=0.562

5.5寸 414/736=0.5625

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

// 在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){ // 这里以(iPhone4S)为准

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)这个方法使我们常用的设置尺寸的方法,现在我设置了一个类似于这样的方法。

CG_INLINE CGRect

TS_CGRectMake(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;

}

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

这样我们得出的就是转换后的坐标了.这个imageview在4.0,4.7和5.5的位置和尺寸比例都是一样的.

你可能感兴趣的:(iOS屏幕适配-frame布局)