ios应用程序兼容3.5寸屏和4寸屏

来源:互联网 发布:mac能用硕鼠吗 编辑:程序博客网 时间:2024/04/27 18:43

首先在应用程序中导入这个图片,然后如果是在4寸屏幕下运行,程序会自动适应4寸的屏幕。如果没有这个图片的话,在4寸屏下运行时界面上下会出现黑框

虽然已经自动适应屏幕了,但是UIView中的控件应当是相对于UIView的frame的,否则,如果控件的frame是固定的数字的话,还是不能实现自适应位置
例如:
如果想实现一个UILabel控件始终位于:距离屏幕下边缘140高的位置,则不能这样写:
    lblMsg [[UILabel alloc] initWithFrame:CGRectMake(150,  320, 150, 30)];
这样是不行的,因为它的Y值已经固定了,所以它的位置不会随屏幕的拉伸而改变。如果在4寸屏的时候,它就会位于屏幕中间的位置了,而不是下方。

解决办法:可以使用
    lblMsg [[UILabel alloc] initWithFrame:CGRectMake(150,  [UIScreen mainScreen].bounds.size.height 140, 150, 30)];
这种情况下,UILabel的Y值是相对于屏幕尺寸而变化的,所以就实现了在3.5寸屏和4寸屏下,始终都位于距离屏幕底部 140高的位置上。  

同样,对于控件的高度等,也是需要相对定位的,不能写死。这样就实现了兼容

IOS 应用程序兼容3.5寸屏和4寸屏 - qk13warcraft - qk13warcraft 的博客
(Default-568h@2x.png 右下角的图片自己去PS掉咯··)

 

修改程序界面,应尽量获取当前屏幕的size,而不是写死的值(尽量不要写死480,而根据当前屏幕[UIScreen mainScreen].bounds)选择能在分辨率改变时省去不少麻烦
判断设备是不是iPhone iPod 5
#define IS_IPHONE_5 (fabs((double)[[UIScreen mainScreen] bounds].size.height (double)568)

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


转载:http://qk13warcraft.blog.163.com/blog/static/157549344201292123851208/