ios7适配一些问题
来源:互联网 发布:淘宝客招代理 编辑:程序博客网 时间:2024/05/16 23:47
ios7适配一些问题
1. 如何判断版本
如果你已经开发过ios旧版本的app,现在想适配在ios7上,那如何判断现在的版本类型是一个很有用的办法:
[[[UIDevice currentDevice] systemVersion] floatValue] < 7.0 //如果当前ios版本小于7
通过该判断你可以写出针对于ios7的分支代码出来,对于一些细节的问题非常有用。
2. 布局问题
在ios7适配中,布局问题是一个很头痛也很重要的问题,因为在ios7中viewController使用了全屏布局的方式,也就是说导航栏和状态栏都是不占实际空间的,状态栏默认是全透明的,导航栏默认是毛玻璃的透明效果。
如果在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;
edgesForExtendedLayout是ios7的新属性,所以在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全屏显示会发现他的位置是正确的,而且导航栏的毛玻璃效果闪闪发亮。那是因为在ios7的controller中增加了automaticallyAdjustsScrollViewInsets属性,默认值为YES。他的作用就是如果视图中有唯一的ScrollView存在,那么它会自动改变ScrollView中contentView的位置,让其不会让导航栏挡住,也能让ContentView移上去的时候在导航栏后面显示。
当然,然后视图里的ScrollView不满足系统的要求,我们就需要自己控制contentView的位置了:
UIEdgeInsets contentInset = self.tableView.contentInset;
contentInset.top = 64;
[self.tableView setContentInset:contentInset];
这样也就是达到了automaticallyAdjustsScrollViewInsets属性的效果
2).样式上
ios7上的tableView样式有很大的改动,尤其是grouped样式下。
我们可以看到ios7中cell的分割线是默认不会画满的,空出的位置大小是会根据cell.imageView的大小决定了。如果你他能跟ios6一样的效果,值需要将cell的separatorInset属性的left值改成0即可。
4. statusBar修改样式
大家可能发现了在ios7中statusBar的颜色明明可以有下面几种选择的但是缺没有效果。
UIStatusBarStyleDefault 默认色,随背景颜色深浅改变,优先黑色
UIStatusBarStyleLightContent 随背景颜色深浅改变,优先白色
UIStatusBarStyleBlackTranslucent 黑色透明
解决方法:
第一步:在Plist里面添加UIViewControllerBasedStatusBarAppearance 设置为:NO
第二步:在入口类中写:[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
5. 其他问题
UILable背景问题
在ios7中UILable的背景默认是clearColor,而ios6中默认是白色
UIButton样式问题
在ios7中UIButton默认是没有背景框的,在ios6中有明显的默认边框
- ios7适配一些问题
- ios7适配一些问题
- iOS7适配遇到的一些问题
- iOS7适配遇到的一些问题
- iOS7适配遇到的一些问题
- iOS7适配遇到的一些问题
- iOS7适配遇到的一些问题
- iOS7适配遇到的一些问题
- iOS7 UI改变总结 & iOS7适配遇到的一些问题
- iOS7 适配问题
- iOS7适配问题
- iOS7适配问题
- ios7适配问题
- iOS7适配问题
- iOS7 -- iOS7的UI适配问题
- iOS7适配问题总结
- ios7屏幕适配问题
- iOS7适配问题总结
- 织梦DedeCMS- 软件等级无变化和使用图形替代星号的解决办法
- 测试git 代码碎片
- 一维数组当成二维使用
- 测试git 功能
- intellij 开发 scala
- ios7适配一些问题
- Scala中的集合:Iterator、BitSet、Set、Map、Stack、Vector、List、Array
- 招聘程序员之如何让金子正确发光
- WebView 的使用
- linux内核中链表操作
- Java Exchanger
- dedecms标签:autochannel-指定栏目
- 网站收藏
- 大数相加