IOS7的一个小改变
来源:互联网 发布:短信轰炸机软件下载 编辑:程序博客网 时间:2024/05/14 09:04
这段时间一直忙着项目中功能点的实现,对界面上的东西没有过多的注意,昨天我把美工刚给我设计好的界面拿过来,打算调整一下程序的界面,我发现了一个问题……
好了,不罗嗦了,进入主题
因为我这个界面主要是用来展示图书列表的,因此上满加了一个scrollView,这样可以展示多于一屏的界面,当我按照美工设计的尺寸往scrollView上加图的以后,每次运行发现图片在scrollView上的显示都有向下一段像素的偏移,我仔细的检查了一遍又一遍的代码,也没有发现问题。我刚开始想的是图片的偏移是不是因为那里更改了scrollView的contentOffset属性被修改了,我查找了代码中这个属性,结果没发现。经过断点调试,我从堆栈里的信息里发现从程序运行开始到执行到断点之前,系统已经执行了很多功能,从里面我发现NavigationController,做了很多事情,再看界面,这个界面上面确实有NavigationBar的存在,我目测一下,下移的高度和NavigationBar+statuBar的高度,我从创建到最后执行这段代码这两处分别都打印了scrollView.contentOffset.y的值,结果发现没变!这更让我无法接受了!!明明是下移了,但是为什么打印出来没有改变呢?
我用了刚学的一个监测系统内部变量状态变化的方法:就是在创建scrollView的同时新建立一个线程,来不断的监听scrollView.contentOffset.y的值从建立到最终加到屏幕上后这段时间内的变化,结果我发现打印的结果是0.0--64.0--0.0!这说明系统默认对scrollView.contentOffset.y做了64个像素的偏移,这让我不能理解了。这是为什么呢?我又仔细查找了scrollView的相信介绍,发现加在scrollView上的view的显示同时受到以下三个属性的限制:contentOffset,contentSize和contentInset这三者的限制,前两个属性我们都知道,也一直在用,这是这第三个属性一直都没用过甚至都不知道它的存在。
经过一番查找我发现:从IOS7之后,桌面的坐标原点相对以前发生了变化,在IOS7以前的系统,如果界面上加了statuBar后,坐标原点会相对原来的(0,0)下移至(0,20),如果界面上再同时出现了NavigationBar之后坐标原点就会下移到(0,64)的位置,这时候你打印self.view.frame的时候你会发现,他的frame会变成(0,0,320,416)。但是到了IOS7以后,就有了变化。这是因为新系统采用了完全不一样的风格,系统的各种用于导航的空间都采用了半透明的设置,这样使得用户能够透过这些控件看到它背后的东西,因此view的坐标原点一直都没有变化,但是它比较智能,为了让你少做工作,它把scrollView.contentInset做了一个便宜,如果界面上有statuBar存在它就将scrollView.contentInset.top设置为20,如果还有NavigationBar那就设置为64,这样使得contentSize这个框向下移动了指定的像素,移动好以后,又把contentOffset的属性设置为(0,0),好像什么也没发生一样。
总结一下:IOS7系统以后,view的定点一直都在左上角,不管界面是不是有状态栏和导航栏。还有就是如果有状态栏或者导航栏,你在使用scrollView的时候,它会很智能的讲内部试图向下做个偏移。(我觉得他这种智能是多余的,还是让我们自己做好了)
当然这只是我个人的拙见,如果牛人路过发现有什么不对的地方,还请帮忙给指出来,谢谢了!
- IOS7的一个小改变
- iOS7用户界面的改变
- iOS7的一个小改动:indexPathForCell获取Button的NSIndexPath
- iOS7中NSArray的改变
- ios7 改变状态栏的风格
- iOS7中改变导航栏的标题
- iOS7对UITableViewCell的层级改变
- IOS7中 改变cell的宽度
- ios7状态栏字体颜色的改变
- 在iOS7中UIPageControl的改变
- IOS6 IOS7 UITableViewCell的层级改变
- iOS7对UITableViewCell的层级改变
- iOS7对UITableViewCell的层级改变
- iOS7对UITableViewCell的层级改变
- 记录一个小有意思的改变路径的问题
- 【菜】一个旋转镜子改变光路的小程序
- 使用mspaint改变图片大小的一个小技巧记录
- 一个小技巧改变DOS难看的外部
- 1244数列有序!
- 为控制器创建xib文件
- 1249首字母变大写
- 【安装包制作】Actual Installer使用教程
- java判断字符范围(URI的实现)
- IOS7的一个小改变
- 基于Raspberry PI和LMS构建的家庭无线背景音乐系统
- sublime text2 配置C/C++和Java
- 1292图形打印
- Myisam表锁优化建议
- 1294选票统计
- 【cocos2d-x IOS游戏开发-城市跑酷11】设置菜单层及新的开始
- malloc/free与new/delete区别
- 字符串编码问题学习