UIScrollView的坑--UINavigationController Push后位置变化
今天在使用UIScrollView的时候遇到了一个问题,记录一下.如果这个记录有幸被您搜索到,或许对您有些帮助.
今天有这样一个需求:
在一个由导航条控制的页面中.需要显示一些信息,目前已经有10多行,怕以后可能会增加,所以这里考虑使用滚动视图.
由于使用的是storyboard,所以就直接拖拽了一个UIScrollView到控制器的视图中,设置frame为0,64,320,504
然后开始往UIScrollView上拖拽控件...
完成后一运行,发现UIScrollView中的控件位置都不对,感觉整体向下移动了64的位置,刚好是导航条和状态栏的高度...
左弄右弄一番后,还是老样子...
于是到群里问了下大婶们.得到的答案是:
一般不用拖控件,一般都是手写代码,动态加上去的...
将UIScrollView的位置设置为0,0,因为Push进来的时候会将视图向下压一个导航条的高度...
于是一番设置后,上面的位置可以了,但是下面滚动的又不协调了:由于UIScrollView的Y值是0,是从屏幕的顶端开始往下滚动....
结果还是有问题...于是专门写了下面例子代码
例子很简单.一个 UINavigationController导航,root下有2行,对应2个页面.
2个页面同样的放了
一个UIScrollView frame为0,64,320,504
一个lable 位置为0,0,
但是在push后显示的位置有变化:第一个页面中的lable被下移了...
问题:
由于在页面1和页面2中UIScrollView都是直接在控制器视图的下面,即控制器视图下的第一个元素就是UIScrollView.
这样nav就会将此视图向下压一个导航条(有没有加状态栏的高度我没有验证)的高度.所以lable的位置发生了变化...
解决方法:
如页面2中,随意将一些空间拖拽至控制器视图下,使UIScrollView不是控制器视图的第一个元素即可.
运行程序,进入页面2,发现位置是我们想要的了.其中原理暂不清楚..
猜测可能是因为...如果你知道其中的原因,可在此留言...感激不尽
这里将测试的工程放在此,如果有需要可以去下载.
百度网盘:http://pan.baidu.com/s/1mgNu7XI
UIScrollView的坑--UINavigationController Push后位置变化的更多相关文章
- [IOS 实现TabBar在Push后的隐藏 以及 两级Tabbar的切换]
翻了好多网页都没找到资料,自己试了下终于成功了,遂分享一下. 1.实现TabBar在Push后的隐藏 假如结构是这样 NavController->A->B,我们想要实现在A里有Tabba ...
- UIScrollView offset in UINavigationController
转:UIScrollView offset in UINavigationController 通过设置viewCtronller的 self.automaticallyAdjustsScrollVi ...
- 自定义UINavigationController push和pop动画
http://segmentfault.com/q/1010000000143983 默认的UINavigationController push和pop的默认动画都是左右滑动推出,我的应用要求这种界 ...
- 使用wkwebview时,push后,再pop返回,报错
使用wkwebview时,push后,再pop返回,报错 Cannot form weak reference to instance (xxxx) of class xxxx. It is poss ...
- iOS 有TabBar的VC界面push后隐藏TabBar的方法
当一个UITabbarController管理多个UINavigationController的时候, 我们要从这每一个UINavigationController中push一个ViewControl ...
- iOS开发手记 - iOS9.3 UINavigationController添加后不显示storyboard中viewcontroller里的控件的解决方法
我原先是这么做的,通常也是这么做 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSD ...
- “git push”后返回“Error 403”解决方法
问题描述: 1,mac ox系统,terminal上运行命令git push出现403错误: 2,代码是在别人的github(暂且叫origin branch吧)上克隆的,修改和添加了部分代码后欲提交 ...
- git push 后 链接总是灰色点击没有反应
情况描述: mymon是openfalcon的监控mysql插件,从GitHub拉下来后,改动源码后,提交到公司内部的gitlab上,发现提交上去的图标总是灰色的,点击进不去,如下图所示.怎么解决? ...
- git push后自动部署
前提,服务器已经装好ssh,本地也已经将ssh 公钥传到服务器对应位置 先用 pbcopy < ~/.ssh/PRIVATE_KEY.pub 将公钥复制到剪贴板:通过 ssh USER@SERV ...
随机推荐
- 转....导入excel错误:外部表不是预期的格式 解决方案
环境:win7+iis7+Office2007 在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一 ...
- JavaScript之模拟评星打分
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312&qu ...
- sql还原数据库时候,遇到数据库被占用的解决情况
最近上班时候,经常要做数据库还原,时常遇到数据被占用的情况, 执行一句sql语句就可以解决, ALTER DATABASE dbname SET OFFLINE WITH ROLLBACK IMMED ...
- Page 的生命周期学习小结(翻译兼笔记)
初始化(Initialization) 页面被请求时,第一个被执行的总是下面接着执行的是 接着是 然后是 恢复和加载(Restore and Load) 接下来的 ViewState 被取回后,接着 ...
- 谈谈css中的before和after
css中的伪元素before和after,其实有很多小的妙用. 一.基础用法 w3c中的基础用法:用来给元素的内容前面(对应:before)或者后面(对应:after)插入新内容. <p> ...
- union 中可以存储的是不带构造函数的类对象
union 中可以存储的是不带构造函数的类对象 否则不符合逻辑 为什么不符合逻辑?
- httpc服务器错误类型大全
HTTP 400 - 请求无效HTTP 401.1 - 未授权:登录失败HTTP 401.2 - 未授权:服务器配置问题导致登录失败HTTP 401.3 - ACL 禁止访问资源HTTP 401.4 ...
- Node.js Cannot find Module xxx 的问题
不知道为什么第一天Node.js干的挺顺利的,回公司后就干的一点都不顺利,主要原因还是公司的网络的问题,使用的受限制的代理,不能直接使用NPM从远程下载模块,唉. node.js的模块加载顺序首先是从 ...
- Export功能 导致 页面显示很多非法字符,还可能页面显示两次
private void exportBinaryToExcel(byte[] bytes, string filename) { Response.AddHeader("Content-D ...
- pdo 连接数据库 报错 could not find driver 解决方法
在windows 下,调试一个PHP程序时,报了这个错误, could not find driver 原来我的这个程序中用到了PDO对象, 连接mysql 5. 在PHP的默认设置中,只打开了ph ...