文档章节

ios7适配一些问题

余成海
 余成海
发布于 2014/03/10 17:18
字数 921
阅读 775
收藏 1

1.      如何判断版本

如果你已经开发过ios旧版本的app,现在想适配在ios7上,那如何判断现在的版本类型是一个很有用的办法:

[[[UIDevice currentDevice] systemVersion] floatValue] < 7.0  //如果当前ios版本小于7

通过该判断你可以写出针对于ios7的分支代码出来,对于一些细节的问题非常有用。

2.      布局问题

ios7适配中,布局问题是一个很头痛也很重要的问题,因为在ios7viewController使用了全屏布局的方式,也就是说导航栏和状态栏都是不占实际空间的,状态栏默认是全透明的,导航栏默认是毛玻璃的透明效果。

如果在ios7中加入一个view,我们可以看到以下代码的效果:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,100,100)];

[label setText:@”大家好”];

[label setTextColor:[UIColor blueColor]];

[label setBackgroundColor:[UIColor blueColor]];

[self.view addSubview:label];

方案一:

self.navigationController.navigationBar.translucent = NO;

这句话的意思就是让导航栏不透明且占空间位置,所以我们的坐标就会从导航栏下面开始算起。

方案二:

       self.edgesForExtendedLayout = UIRectEdgeNone;

    edgesForExtendedLayoutios7的新属性,所以在ios7以下设备会出现奔溃现象,解决办法就是先判断在使用,可以通过判断系统版本,也可以通过判断方法是否可使用

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])

edgesForExtendedLayout默认的值是UIRectEdgeAll就是全部布局的意思,改成UIRectEdgeNone就会和ios7一起的系统版本一样的效果

方案三:

ios7单独定制位置,通过判断系统版本,个性为ios7定制位置。

       const BOOL is_ios7 = [[[UIDevice currentDevice] systemVersion] floatValue] < 7.0;

       int y= is_ios7 ? 64 : 0;

3.      UITableView样式

ios开发中UITableView是最常用的控件,ios7对于UITableView的改动也是非常大的。

1.布局上

上面说的ios7的初始化位置都是从屏幕开始的,但是如果你使用UITableView全屏显示会发现他的位置是正确的,而且导航栏的毛玻璃效果闪闪发亮。那是因为在ios7controller中增加了automaticallyAdjustsScrollViewInsets 属性,默认值为YES。他的作用就是如果视图中有唯一的ScrollView存在,那么它会自动改变ScrollViewcontentView的位置,让其不会让导航栏挡住,也能让ContentView移上去的时候在导航栏后面显示。

当然,然后视图里的ScrollView不满足系统的要求,我们就需要自己控制contentView的位置了:

UIEdgeInsets contentInset = self.tableView.contentInset;

contentInset.top = 64;

[self.tableView setContentInset:contentInset];

这样也就是达到了automaticallyAdjustsScrollViewInsets属性的效果

2.样式上

ios7上的tableView样式有很大的改动,尤其是grouped样式下。

我们可以看到ios7cell的分割线是默认不会画满的,空出的位置大小是会根据cell.imageView的大小决定了。如果你他能跟ios6一样的效果,值需要将cellseparatorInset属性的left值改成0即可。


4.      statusBar修改样式

大家可能发现了在ios7statusBar的颜色明明可以有下面几种选择的但是缺没有效果。

UIStatusBarStyleDefault      默认色,随背景颜色深浅改变,优先黑色

UIStatusBarStyleLightContent  随背景颜色深浅改变,优先白色

UIStatusBarStyleBlackTranslucent 黑色透明

解决方法:

第一步:Plist里面添加 UIViewControllerBasedStatusBarAppearance 设置为:NO        
第二步:在入口类中写:[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

5.      其他问题

UILable背景问题

           ios7UILable的背景默认是clearColor,而ios6中默认是白色

UIButton样式问题

ios7UIButton默认是没有背景框的,在ios6中有明显的默认边框

         更多ios7配置位置请下载《iOS 7 UI Transition Guide


© 著作权归作者所有

余成海
粉丝 62
博文 57
码字总数 29577
作品 0
杭州
iOS工程师
私信 提问
IOS7状态栏StatusBar官方标准适配方法

IOS7状态栏StatusBar官方标准适配方法 hello,大家好,ios7正式版已经发布,相信大家都在以各种方式来适配ios7. 如果你已经下载了xcode5,正准备使用,你会发现各种布局的改变. 注定这段时间是忙的...

长平狐
2013/12/25
83
0
ios新特性sizeclasses的应用,以及ios7的适配问题

4s屏幕的适配: 运用sizeclasses的过程中,在做4s屏幕适配的时候,可以使用约束关系中的大于小于等于三种关系适配,添加多条约束条件,并且给每个约束条件设置1000、750、250三种优先级,合理...

HillYoung
2015/03/04
0
0
iOS5、6、7状态栏适配方法

由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,所以了,我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,...

三只脚的猪
2014/03/07
0
0
Analyze检测的User-facing text should use localized string macro警告修复

问题描述:一开始项目最低适配ios7,后来为实现一些特殊功能,将最低适配修改为iOS8,在检测内存泄漏时出现一百多个“User-facing text should use localized string macro”警告; 解决办法:...

biyu6
2016/10/19
329
0
iOS SDK更新的速度太快,开发者的适配工作

无论如何,作为一个iOS开发者,都必须与时俱进,不久Apple放话,后续更新的App都必须由xcode5和iOS7SDK打包的,这样的强制让我们小伙伴情何以堪,所以我在这里写了一个适配的教程,不过你要丢...

曾宪华-
2014/01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Disable Autostart of MySQL Server on Ubuntu

OSC Markdown Editer 真香,笔记一篇,懒得转中文,如有表述问题,请不吝指出,先谢为敬! OS: Ubuntu 19.04 When the MySQL server is installed, it automatically started with the OS. I...

Iridium
19分钟前
0
0
OpenStack RDO + S3

Packstack(RDO) installation "sync db timeout" issue version: openstack-packstack-13.0.0-0.1.0rc1.el7.noarchopenstack-packstack-puppet-13.0.0-0.1.0rc1.el7.noarch add timeout =>......

Firxiao
22分钟前
0
0
java运算符的优先级

https://www.cnblogs.com/zjfjava/p/5996666.html

南桥北木
27分钟前
0
0
线性代数的静态观-向量空间(一)

向量是一个具有大小和方向的量,因此只要大小与方向相同则向量也相同,从而向量可以自由平行移动。 向量与点不同,它反映的是从A到B的位移(既包含位移的方向又包含位移的大小),而点仅仅是...

FAT_mt
28分钟前
0
0
Redis缓存穿透、缓存雪崩和缓存击穿

Redis缓存穿透、缓存雪崩 缓存雪崩,是指在某一个时间段,缓存集中过期失效。 产生雪崩的原因之一,比如在写本文的时候,马上就要到双十二零点,很快就会迎来一波抢购,这波商品时间比较集中...

architect刘源源
49分钟前
11
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部