特别提醒:iOS7适配坐标问题

  最近在做一个项目,发现安装了xcode5后有些不适应,一些功能用起来不习惯。其次,iOS7的适配问题也很是让人头痛,后来在网上看了很多资料,寻找到了一些Demo之后总算有点头绪了,关于iOS7适配坐标问题,总结起来主要有一下几点,希望对大家在以后做项目中有所帮助。

  1、原点坐标问题

  以前在做项目的时候,写xy坐标时都是在状态栏或者导航栏下,iOS7现在统一到屏幕的左上角了,还不完全转变过来,因此认为状态栏要不要都是一个问题。

  需要隐藏状态栏:在IOS7以前我们只需要执行[UIApplication sharedApplication].statusBarHidden = YES;

  可这段代码在IOS7上行不通!在IOS7上隐藏状态栏有两种方法:

  //方法一(代码设置):

  在uiviewcontroller的子类下,调用:

  if ([selfrespondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

  [selfprefersStatusBarHidden]; }

  - (BOOL)prefersStatusBarHidden { returnYES; }

  在视图切换,比如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;这样貌似也能达到效果。

  以上分享了iOS7适配坐标方面的问题,大家有更好的方法更好的建议希望也分享出来,无限互联视频教程可能对大家都有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值