iOS7适配坐标问题

        最近在准备项目当中,安装了xcode5后发现多多少少有些不适应,有些功能用起来还不是特别习惯。其次,IOS7的适配问题也很是让人头痛,在网上看了一些资料和下了一些Demo总算了有点头绪了,总结起来有以下几点,希望自己在以后的项目中注意。

        1、原点坐标问题

以前在写xy坐标时都是在状态栏或者导航栏下,现在一律统一到屏幕的左上角了,那么状态栏要不要是个问题。

需要隐藏状态栏:在IOS7以前我们只需要执行[ UIApplication    sharedApplication ]. statusBarHidden = YES ;
可这段代码在IOS7上行不通!在IOS7上隐藏状态栏有两种方法:
  //方法一(代码设置):
在uiviewcontroller的子类下,调用:
     if ([ self respondsToSelector : @selector (setNeedsStatusBarAppearanceUpdate)]) {
        [ self prefersStatusBarHidden ];     }
- ( BOOL )prefersStatusBarHidden {     return YES ; }
  在视图切换,比如addsubview,present,pushin等,也需要注意及修改该状态栏。
//方法二(在plist里设置):对ios7以下都适用
首先设置key:Status bar is initially hidden    为YES
然后设置key:View controller-based status bar appearance  为NO
即可实现全局隐藏状态栏了 
如果不需要隐藏状态栏而又想给状态栏留位置那就只得改变view的坐标了,如果使用lib的话可以直接选择所有控件,在布局界面中有个iOS6/7 Deltas偏移量,修改y坐标偏移量即可。

        2、UIScrollerView类顶部和底部预留空白的问题。

        由于IOS7中状态栏和导航栏以及底部的标签栏都是半透明效果,所以系统会默认为在视图控制器的视图上的所添加的UIScrollerView(包括其子类)预留空白位置,这个我们通过滑动条可以看到,那么这样我们就会发现一个问题:如果我们的UIScrollerView的origin不设置为(0,0)那么还是会预留20或者64的高度。
        如何解决:在UIViewController中有一个automaticallyAdjustsScrollViewInsets这样的属性控制,返回Yes表示预留空白。但是有一点非常重要,一个控制器中,出现UIScrollerView(包括其子类),必须是第一个添加到控制器的视图才会预留空白,这里的第一个是相对于所有的子视图,不仅仅是其他UIScrollerView(包括其子类)。因此,如果一个视图控制器中出现了两个以上的UIScrollerView类,那么automaticallyAdjustsScrollViewInsets属性需要设置为NO,即不会预留空白,那么这个控制器中所有的UIScrollerView类都需要重新设置坐标。当然,方法应该还有很多,在网上看到说self.navigationController.navigationBar.translucent = NO;这样貌似也能达到效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值