项目从xcode4.6迁移到xcode5.0 中遇到的若干问题

来源:互联网 发布:美工完成工作进度表 编辑:程序博客网 时间:2024/06/07 13:53

公司项目,最近不是很多任务,所以尝试将项目迁移到5.0 。

其实这并不是一件很难的事情,但是因为之前前辈对项目的架构存在一些小问题,所以还是会遇到一些问题。但都是小问题。下面记录下来,以供回忆。


1、首先就是statusBar遮盖view元素的问题。如图:

这个问题如果google一下,真是各种解决方案满天飞,其中有一位女coder的方案,很有趣,当然只针对xib和storeboard的视图。链接:http://blog.csdn.net/rhljiayou/article/details/12029927 

对于 xib和storeboard的视图 可以用这个办法很快捷和方便的解决。五星好评一下。

但是代码生成的视图,怎么办呢?只能受累,在需要的地方,手动调整一下frame了。怎么判断iOS版本,怎么调整frame就不多说了(state bar 高度20)。这应该是iOS 程序员必备基本功了吧。。。。。。。。


2、UITableView 背景变成白色了。

原因很简单,In iOS 7, cells have a white background by default。所以,设置一下cell 的background color  就可以了。当然要在 cellForRowAtIndexPath 里进行。

参考:http://stackoverflow.com/questions/18753411/uitableview-clear-background

小技巧:想快速找到项目里所有使用UITableView的地方进行修改? 搜 return cell 就好了。结果的上一行加上 cell.backgroundColor = [UIColorclearColor];

3、最棘手的,至今不知如何解决。navigationBar 如果setBackgroundImage 了。BackgroundImage 错位20像素。如图


正在尝试解决中。。。。

解决了。这个因为iOS7 里的 navigationBar 和 statusBar 是一体的,准确的说,navigationBar的高度比iOS7以前高了20像素,正是StatusBar的高度。所以,如果需要对navigationBar setBackgroundImage,需要准备一个比之前搞20像素的图片,这个图片会铺满从statusBar 到 navigationBar 的位置。

另外,如果没有显示navigationBar,那么statusBar的背景的颜色是跟着当前视图的背景颜色一致的,也就是说iOS7里的statusBar是透明色。具体在我的项目里,希望statusBar的背景样色不要出现大的变化,所以,需要把每个viewController的背景色设置为黑色。另外statusBar的字体颜色,在iOS7里是有几种方案的,具体查SDK里

UIStatusBarStyle ,其中UIStatusBarStyleLightContent是iOS7新加的,记得代码里使用的适合先判断iOS版本。

更改的方法有很多,一种是直接修改全部项目视图statusBar颜色的方法:

在plist里,增加View controller-based status bar appearance 并设置为NO。

然后在AppDelegate 里 ,在 didFinishLaunchingWithOptions 里 

        

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

即可。

另一种是针对单个视图进行具体个性化设置的方法,

在plist里,增加View controller-based status bar appearance 并设置为YES。

在需要设置的View controller里,实现以下两个方法:

- (UIStatusBarStyle)preferredStatusBarStyle{    return UIStatusBarStyleLightContent;}- (BOOL)prefersStatusBarHidden{    return NO;}

完毕。






原创粉丝点击