iOS手动布局适配屏幕

首先说下让自己的程序支持iPhone6和6+,第一种使用官方提供的launch screen.xib,这个直接看官方文档即可,这里不再多述;第二种方法是和之前iPhone5的类似,比较简单,为iPhone6和6+添加两张特殊的png

iPhone6:命名:Default[email protected] 分辨率:750*1334

6+ 命名:[email protected] 分辨率:1242*2208

注意:

如果要在app的介绍页面里有“为iPhone6,6 plus优化”的字样就必须使用第一种方法,使用第二种方法的话还是会显示“为iPhone5优化”

下面说一下纯代码适配
首先iPhone5的界面一定要完全适配,这样才能完美适配6和6Plus。
首先,我么我们要观察一下5,6和6Plus的尺寸比例关系

很明显能看出这三种屏幕的尺寸宽高比是差不多的,因此可以在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;

}

这样,这个btn按钮在5,6和6Plus的位置和尺寸比例都是一样的。

如果整个项目做完后才开始做适配的话这个方法的优势就体现出来了,面对几十个工程文件,只需自定义并且替换你的CGRectMake方法,再加上storyBoradAutoLay这个方法就瞬间完成大部分甚至全部的适配,如果遇到tableView的或者其他的手动调整一下即可。
时间: 2024-08-26 13:31:37

iOS手动布局适配屏幕的相关文章

iOS小技巧---swift 判断IOS版本及适配

operatingSystemVersion 为了更复杂的版本比较,operatingSystemVersion能够被直接检查.将它和Swift模式比较和switch语句组合,可以使得代码更简洁. let os = NSProcessInfo().operatingSystemVersion switch  (os.majorVersion, os.minorVersion, os.patchVersion) { case  (8, _, _):      println( "iOS >=

iOS开发UI篇—屏幕适配autoResizing autoLayout和sizeClass图文详解

1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很少支持横屏,所以iOS开发者基本不用怎么适配布局,所有的ui控件只要相对父控件布局就可以了,没错autoResizing就是一个相对于父控件的布局解决方法:注意:它只能相对父控件布局:***在xcode中可以通过可视化的界面调整也可以通过代码去控制 在用autoResizing的时候需要关闭autoLayout和sizeclas

iOS6 及其以上版本自动旋转、手动强制旋转方案及布局适配

1.布局适配方式 本文不讨论哪种布局适配方式最好,此处使用的是 Masonry 纯代码布局适配.(Masonry 底层就是 AutoLayout 的 NSLayoutConstraint) 2.iOS 方向枚举类 // 三维设备方向 typedef NS_ENUM(NSInteger, UIDeviceOrientation) { UIDeviceOrientationUnknown, UIDeviceOrientationPortrait, // Device oriented vertica

IOS中xcode6以上控件布局适配,两控件的距离,控件占百分比

1.控件的适配 让下面的view(绿色部分)模拟器,这就需要做一下人为的约束(constraints) 1.首先做一个顶端约束,选中view(一定要选中要需要调整的控件)——Editor——Pin——Top Space to Superview 2.接下来将Contant值设为为0,意思是view这个控件与模拟器顶端距离为0,设置为0了之后,左侧视图并不会发生变化,这个约束会在编译时起作用,开发中并不会实时响应 接下来依次添加左侧约束(Leading Space to Superview).右侧

iOS界面布局的核心以及TangramKit介绍

前言 TangramKit是iOS系统下用Swift编写的第三方界面布局框架.他集成了iOS的AutoLayout和SizeClass以及Android的五大容器布局体系以及HTML/CSS中的float和flex-box的布局功能和思想,目的是为iOS开发人员提供一套功能强大.多屏幕灵活适配.简单易用的UI布局解决方案.Tangram的中文即七巧板的意思,取名的寓意表明这个布局库可以非常灵巧和简单的解决各种复杂界面布局问题.他的同胞框架:MyLayout是一套用objective-C实现的界面

iOS界面布局之三——纯代码的autoLayout及布局动画

iOS界面布局之三--纯代码的autoLayout及布局动画 一.引言 关于界面布局,apple的策略已经趋于成熟,autolayout的优势在开发中也已经展现的淋漓尽致.除了使用storyBoard进行布局约束的拖拽,有时我们也需要在代码中进行autolayout的布局设置,Masonry库可以方便的创建约束属性,实际上,我们也没有必要再使用系统原生的代码来创建和设置约束,这篇博客只作为使用的方法备忘.前几篇布局介绍的链接如下: 使用autoresizing进行界面布局:http://my.o

适配屏幕

基本概念: dp 和px转换. 布局技巧:gravity, 设计布局:通用的ui设计. 参考: http://blog.csdn.net/tanqiantot/article/details/11174011 官方:适配doc Android屏幕适配小技巧sw<n>dp: http://blog.csdn.net/chenzujie/article/details/9874859 android 文件夹的命名和作用,屏幕适配很有用! 适配屏幕,布布扣,bubuko.com

ios基础-分辨率适配

(一)分辨率定义 分辨率,是指单位长度内包含的像素点的数量,它的单位通常为像素/英寸(ppi).描述分辨率的单位有:(dpi点每英寸).lpi(线每英寸)和ppi(像素每英寸). (二)ios分辨率 iOS设备,目前最主要的有3种(Apple TV等不在此讨论),按分辨率分为两类 (1)iPhone/iPod Touch 普屏分辨率    320像素 x 480像素 普通Retina分辨率 640像素 x 960像素 iphone5的屏幕分辨率:640像素 x 1136像素 (2)iPad 普屏

ios关于UI适配的一些问题

1.如果设置了self.navigationController.navigationBar 设置了UIBarMetricsLandscapePhone的背景;而没有设置UIBarMetricsDefault的背景,navigationBar会变透明 如图所示: navigationBar透明 2.上图还出现了一个问题,如果没有设置self.automaticallyAdjustsScrollViewInsets = NO,那么iOS7下会自动让scrollView滑动64,以满足UITable