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 ...
随机推荐
- Java Concurrency - Lock
Lock 是 Java API 提供的另一种线程同步机制,它提供了比 synchronized 关键字更为灵活.强大的锁定操作. 锁是控制多个线程对共享资源进行访问的工具.通常,所提供了对共享资源的独 ...
- MyBatis(3.2.3) - One-to-many mapping
In the sample domain model, a tutor can teach one or more courses. This means that there is a one-to ...
- Lombok(1.14.8) - @Synchronized
@Synchronized @Synchronized,实现同步. package com.huey.lombok; import java.util.Date; import lombok.Sync ...
- SQL 数据库基础语句
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建备份 ...
- Debian8 加载NTFS 磁盘出错 解决方法
执行 ntfsfix /dev/sdb2 // sd* a代表第一块硬盘 b代表第2块硬盘 数字是分区号 执行后 就可以正常使用了.
- android application类的用法
android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ...
- iOS - 基于蓝牙数据交换的环境监测(温度、湿度、光照、粉尘、噪声)
一.蓝牙外设的数据接收 二.App端显示获取数据
- hexo部署到gitcafe上静态博客
http://zanderzhang.gitcafe.io/2015/09/17/hexo部署到gitcafe上静态博客/ hexo这些事儿,zippera's blog,之类的,这些都说的很清楚了. ...
- 我的博客已搬迁到http://www.lsworks.net
我的博客已搬迁到http://www.lsworks.net
- 免费的HTML5连载来了《HTML5网页开发实例详解》连载(三)DOCTYPE和字符集
在2.1.2节中通过新老DOCTYPE的对比,读者可以清晰地看到HTML 5在精简旧有结构上做出的努力.DOCTYPE在出现之初主要用于XML中,用作描述XML允许使用的元素.属性和排列方式.起初HT ...