iOS7适配坐标问题

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

  1、原点坐标问题

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

  需要隐藏状态栏:在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;这样貌似也能达到效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值