项目从xcode4.6迁移到xcode5.0 中遇到的若干问题
2013-11-13 14:18
302 查看
公司项目,最近不是很多任务,所以尝试将项目迁移到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 里
即可。
另一种是针对单个视图进行具体个性化设置的方法,
在plist里,增加View controller-based status bar appearance 并设置为YES。
在需要设置的View controller里,实现以下两个方法:
完毕。
其实这并不是一件很难的事情,但是因为之前前辈对项目的架构存在一些小问题,所以还是会遇到一些问题。但都是小问题。下面记录下来,以供回忆。
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; }
完毕。
相关文章推荐
- cocos2dx项目从xcode移植到vs2012遇到的问题
- ubuntu将svn项目迁移到git步骤以及遇到问题的解决方案
- 如何解决打开xcode项目是遇到的“cannot be opened because the project file cannot be parsed.”问题?
- 解决django项目迁移过程中遇到的问题。
- 更新到Android Studio 3.0项目迁移遇到的问题解决方案
- Xcode 8最近朋友的项目遇到了关于上架的问题以及xcode8所需要的环境的配置以及ios 10所支持的功能
- tomcat项目迁移到weblogic过程中遇到的问题(持续更新)
- VS2003项目迁移到VS2005开发环境遇到的问题!
- 在xcode9下项目遇到的问题
- 项目迁移到Linux WebLogic遇到的问题与解决
- 最近在项目中实践了一下Redis,过程中遇到并解决了若干问题,记录之.
- 项目从tomcat向weblogic迁移遇到的一些问题
- Java windows项目迁移到linux上,遇到一些跟路径相关的问题
- cocos2dx项目从xcode移植到vs2012遇到的问题
- 迁移项目中mysq中遇到的问题
- 项目从tomcat向weblogic迁移遇到的一些问题
- xcode项目改名遇到的问题
- Excel数据迁移到SQL Server遇到的若干问题
- 一个项目中遇到的若干问题-提出问题-分析问题-解决问题