转自:http://blog.sina.com.cn/s/blog_a843a8850101jxhh.html

iphone5出来了,从不用适配的我们也要像android一样适配不同分辨率的屏幕了。

 
公司产品新版本需要适配iphone5,经过一番折腾算是搞定了。下面分享给大家:
 
iphone5的屏幕分辨率:1136 x 640 也即是高度变成了568,程序启动时我们需要一张retina图片命名为Default-568h@2x.png。在我们创建工程时xcode会默认为我们创建一个纯黑色的图片替换即可。
 
最新版的xcode都已支持iphone5调试:选中模拟器---->设备---->iphone(Retina 4-inch),稍等片刻就可以切换到iphone5模拟器。
 
要适配iphone5需要将view的autosizing设置为如下状态:
 
 
 
当然还要确认选中另一项
 
 
 
这一项默认会选中的,意思是自动缩放子视图。
 
如果我们的view没有使用xib那我们可以使用代码设置这些属性:
 
 
[cpp] 
self.view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin   
| UIViewAutoresizingFlexibleRightMargin |  UIViewAutoresizingFlexibleBottomMargin    
| UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;  
 
self.view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin 
| UIViewAutoresizingFlexibleRightMargin |  UIViewAutoresizingFlexibleBottomMargin  
| UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;接下来设置子视图(比如button,image等):
 
 
 
 
 
对应代码:
 
[cpp] 
autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;  
 
.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;
意思是将控件缩放时与父视图左边和顶部对应。可以根据具体需要设置子控件的autorizingMask相应值。
 
我们还可以通过代码手动改变iphone5下控件的大小或位置:
首先判定一下设备是否为iphone5:
 
 
 
[cpp] 
#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)   
 
#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568) 接着我们可以在view初始化的时候改变frame:
 
 
[cpp] 
if (DEVICE_IS_IPHONE5) {  
        [botton setFrame:CGRectMake(0, 450, 320, 440)];  
}  
 
if (DEVICE_IS_IPHONE5) {
        [botton setFrame:CGRectMake(0, 450, 320, 440)];
}

原文:http://blog.csdn.net/linzhiji/article/details/8000048

今天apple发布ios6, 也许很快就能见到iphone 5的手机。不过现在只能从模拟器上来测试程序。

如何开发或者适配iphone5 4英寸的屏幕

1.安装xcode 4.5,选择Retina(4-inch)启动画面,

2. 添加启动图片, Default-568h@2x.png, 分辨率640 * 1136 pixels, 如果不增加会如下:

3.在编码时,尽量不要写死480,根据屏当前屏幕([UIScreen mainScreen].bounds)选择size能在分辨率改变时省去不少麻烦。

stackoverflow上代码,如何判断iphone 5

[html] view plaincopy

 
  1. #define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) <</span> DBL_EPSILON )

如果要兼任ipad

[html] view plaincopy

 
  1. <</span>p class="p1">#define IS_WIDESCREEN ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )<</span>span class="s1">568</</span>span> ) <</span> DBL_EPSILON )</</span>p><</span>p class="p1">#define IS_IPHONE ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @<</span>span class="s2">"iPhone"</</span>span> ] )</</span>p><</span>p class="p1">#define IS_IPHONE_SIMULATOR ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @<</span>span class="s2">"iPhone Simulator"</</span>span> ] )</</span>p><</span>p class="p1">#define IS_IPOD   ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @<</span>span class="s2">"iPod touch"</</span>span> ] )</</span>p><</span>p class="p1">#define IS_IPHONE_5 ( ((IS_IPHONE) || (IS_IPHONE_SIMULATOR)) && IS_WIDESCREEN )</</span>p>

然后每个界面判断是否iphone5来慢慢的调整。这个有纯粹代码写ipad和iphone的universal版经验的,就能理解多一些。

4. (这个是其他地方拷贝来的) MainWindow.xib文件,在Simulated Metrics中设置window的size为Retina 4 Full Screen;再创建一个3.5寸的UIWindow用于原来的屏幕,同时在appDelegate中创建对应的成员。在app启动时将创建两个window,根据当前屏幕尺寸来决定用哪个window,将另一个隐藏。 
或者launch app的时候手动创建window,而不要用工程建立时自动创建的MainWindow.xib。手动创建main window时注意修改相关默认生成的配置文件,否则若xib文件删除而app还尝试加载会导致闪退,删除plist文件中NSMainNibFile字段。

5.另外一篇文章:

http://blog.csdn.net/linzhiji/article/details/8000125

iOS iphone5屏幕适配 autosizing的更多相关文章

  1. 关于IOS的屏幕适配(iPhone)——资源适配

    IOS的屏幕适配几乎不需要大量的代码操作,更多的时间我们只是动动鼠标选择一下就搞定.可以苹果在这方面做的还是比较人性的,解放了开发者. 首先来说说Iphone这几种屏(由于最近做的是iPhone AP ...

  2. 【iOS】屏幕适配之NSLayoutConstraint

    前言 如何实现一张图片在iPhone和iPad上显示不同的尺寸,我了解到一般有三种办法:直接手写代码动态添加约束:把NSLayoutConstraint关联到ViewController里再viewD ...

  3. iOS开发——屏幕适配篇&Masonry详解

    Masonry详解 前言 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-ip ...

  4. iOS - iPhone屏幕适配/启动图适配/APP图标适配(iPhone最全尺寸包含iPhoneX/XR/XS/XS Max等)

    趁iPhone新品还没有发布,先整理一下屏幕适配.启动图适配.APP图标适配的笔记,方便以后查阅: 注:部分图片来源于网络 违删; (一)iPhone屏幕适配: (1)屏幕分辨率: ①设计尺寸规范(表 ...

  5. iOS开发——屏幕适配篇&autoResizing autoLayout和sizeClass

    autoResizing autoLayout和sizeClass,VFL,Masonry详解 1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前 ...

  6. ios中屏幕适配

    - (void)viewDidLoad { [super viewDidLoad]; // 左上角 // 固定左边和上边,伸缩右边和下边 self.leftTop.autoresizingMask = ...

  7. 关于IOS的屏幕适配(iPhone)——Auto Layout和Size Classes

    Auto Layout和Size Classes搭配使用极大的方便了开发者,具体如何使用Auto Layout和Size Classes大家可以参考其他文章或者书籍,这里只提一点,在我们设置Size ...

  8. iOS学习笔记24-不断进化的屏幕适配

    一.屏幕适配 iOS的屏幕适配可以分为3大块,代表着不同时期的屏幕适配主流: AutoResizing:在iOS6之前,完全能够胜任,因为当时苹果只有3.5寸屏,加上比较少的支持横屏,它有非常大的局限 ...

  9. 屏幕适配-使用autoLayout

    当遇见xib中无法删除的控件时. 将这个错误的控件拖离本xib(第一个元素.xib文件是有许多元素组成的集合),确保这个xib是正确的.重新创建一个xib文件,将这个正确的xib元素整个复制过去. 在 ...

随机推荐

  1. 在C语言环境下使用google protobuf

    本文写给经常使用C编程且不喜欢C++而又要经常使用google protobuf的人.        经常写通讯程序的人对数据进行序列化或者反序列化时,可能经常使用google的protobuf(PB ...

  2. Ubuntu 下无法Tab键自动补全功能解决办法

    在Ubuntu下 使用Tab键报错:cannot create temp file for here-document: no space left on device 解决: rm -rf /var ...

  3. UIActivityViewController 自定义选项

    UIActivityViewController 自定义选项 重写 UIActivity 类 建议下载github上源码学习一下 https://github.com/samvermette/SVWe ...

  4. resharper 7.x 注册码key

    user:dobit sn:G/YgFyekI7EL0oBc5YBWKI5WCi3pwXWP

  5. 【破解三网】iphone5 国行 A1429

    教程仅适用于A1429的I5. 1.首先把sim卡插入手机.关闭蜂窝数据里面的"蜂窝移动数据"还有打开漫游里面的"语音漫游".如图               ...

  6. Maven Archetype Plugin

    使用Archetype的一般步骤 命令——mvn archetype:generate 输入命令后,Archetype插件会输出一个Archetype列表供用户选择:选择自己想要使用的Archetyp ...

  7. 结构类模式(五):外观(Facade)

    定义 为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用. UML 优点 对客户屏蔽了其子系统组件,因而减少了客户处理对象的数目,并使得子系统实用起来更方便. ...

  8. linux TCP数据包重传过程----小结

    于TCP/IP协议栈的TCP协议的重传功能是由在linux内核源码(net/ipv4/tcp_output.c)中的函数tcp_retransmit_skb()实现的 代码如下: /* This re ...

  9. TemplateBinding vs TemplatedParent【PluraSight】

    TemplateBinding:TemplateBinding是一个Markup Extension

  10. Error opening trace file: No such file or directory (2)

    想看sharepreference保存的键值对的数据,用到单元测,运行函数总是报这种错,且看不到file explorer-->data>对应工程包的xml文件: