重点内容
首先 UI设计一般是按照4.7的屏幕设计。
由于 iphone 5 以上 屏幕的比例 相似。只有 4s 屏幕比例比较特殊。
要适配全部机型。我一般都是 在4s上 写一个scrollview,将屏幕 变成与5的大小相同。接下来就简单了
这是一个UIView的类别
这是.h里的内容
+ (CGFloat)Fyh:(CGFloat)yh;
+ (CGFloat)Fxw:(CGFloat)xw;
这是.m里的内容
+ (CGFloat)factorForiPhone5OriPhone4Width
{
return (CGFloat)320 / 375;
}
+ (CGFloat)factorForiPhone6PWidth
{
return (CGFloat)414 / 375;
}
+ (CGFloat)factorForiPhone6Width
{
return 1;
}
+ (CGFloat)Fxw:(CGFloat)xw
{
switch ((NSInteger)[UIScreen mainScreen].bounds.size.width) {
case 320:
return [self factorForiPhone5OriPhone4Width] * xw;
case 375:
return [self factorForiPhone6Width]* xw;
case 414:
return [self factorForiPhone6PWidth]* xw;
default:
return [self factorForiPhone6Width]* xw;
}
}
+ (CGFloat)factorForiPhone5OriPhone4Height
{
return (CGFloat)568 / 667;
}
+ (CGFloat)factorForiPhone6PHeight
{
return (CGFloat)736 / 667;
}
+ (CGFloat)factorForiPhone6Height
{
return 1;
}
+ (CGFloat)Fyh:(CGFloat)yh
{
switch ((NSInteger)[UIScreen mainScreen].bounds.size.height) {
case 480:
return [self factorForiPhone5OriPhone4Height]*yh;
break;
case 568:
return [self factorForiPhone5OriPhone4Height]*yh;
break;
case 667:
return [self factorForiPhone6Height]*yh;
case 736:
return [self factorForiPhone6PHeight]*yh;
default:
return [self factorForiPhone6Height]*yh;
}
}
通常我会写成 宏
这里的 传入的参数 直接就是 iPhone6 下的 坐标 和 宽高
//屏幕适配
#define SFWX(width) [UIView Fxw:width]
#define SFHY(height) [UIView Fyh:height]
调用:
在需要 适配的地方 直接 调用宏定义即可。
UIView * backView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SFWX(320), SFHY(350))];