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;这样貌似也能达到效果。