`
啸笑天
  • 浏览: 3430770 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

判断运行的是iPhone5及解决4inch屏黑边问题

 
阅读更多

如果更加deveice获取iOS的version,那么之前的device升级到iOS6后也会是新的。应该判断机器型号,根据window的bounds的height来判断吧,如果是568就是长的,否则不是,在加入判断前必须要设置launch image里面的Retina(4-inch)设置好后才可以拿到568。这样就能够判断自己的app是运行在拿个设备了。

 

PS:硬件-》设备-》iPhone(Retina 4-inch) 得到4寸的模拟器

NSLog(@"height   %f ",window.bounds.size.height);

2012-09-24 02:00:38.713 HelloWorld[49739:c07] height   568.000000 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

解决4inch屏黑边问题:

iphone5 出来后,针对旧版屏幕的app 放到新iphone 上将会导致黑边问题..

原因: 多出来的88个点将会将会被自动均分为上下两部分.背景为黑色.如图示:


解决办法:

  使用绝对布局的开发者,可能需要对程序进行一些修改.如

CGRect frame =CGRectMake(0,0,320,460);
yourController.view.frame =frame;

以上布局将导致控件固定在某一位置...开发者应逐渐放弃该种布局方式,而采用自适应的动态方式..

  解决办法:

  步骤一. 升级xcode 到4.5

  步骤二. 宏定义获取设备屏幕大小来替换你程序中使用 320,460的一些绝对坐标;

//设备屏幕大小
#define __MainScreenFrame   [[UIScreen mainScreen] bounds]
//设备屏幕宽
#define __MainScreen_Width  __MainScreenFrame.size.width
//设备屏幕高 20,表示状态栏高度.如3.5inch 的高,得到的__MainScreenFrame.size.height是480,而去掉电量那条状态栏,我们真正用到的是460; 
#define __MainScreen_Height __MainScreenFrame.size.height-20

  步骤三.你需要一张640*1138的预加载图(launch image).在工程>TARGETS 中添加,系统将自动将其重命名为Default-568h@2x.png.如下:


结果:

ps.实际上是中间部分被拉伸了88point..如果表格是tableView这将不造成多大的影响.但如上图比较可知,将会造成部分空白的地方.因而,我们需要判断屏幕大小的时候对高度进行判断,再改变中间部分控件的高度.感觉还是比较麻烦..有人说在直接使用460,再放2栏广告在最下方,感觉也不错啊。

  • 大小: 49.5 KB
  • 大小: 23.3 KB
  • 大小: 48 KB
分享到:
评论
1 楼 啸笑天 2013-02-25  
判断设备是不是iphone5 ipod touch5

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

相关推荐

Global site tag (gtag.js) - Google Analytics