今天在使用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后位置变化的更多相关文章

  1. [IOS 实现TabBar在Push后的隐藏 以及 两级Tabbar的切换]

    翻了好多网页都没找到资料,自己试了下终于成功了,遂分享一下. 1.实现TabBar在Push后的隐藏 假如结构是这样 NavController->A->B,我们想要实现在A里有Tabba ...

  2. UIScrollView offset in UINavigationController

    转:UIScrollView offset in UINavigationController 通过设置viewCtronller的 self.automaticallyAdjustsScrollVi ...

  3. 自定义UINavigationController push和pop动画

    http://segmentfault.com/q/1010000000143983 默认的UINavigationController push和pop的默认动画都是左右滑动推出,我的应用要求这种界 ...

  4. 使用wkwebview时,push后,再pop返回,报错

    使用wkwebview时,push后,再pop返回,报错 Cannot form weak reference to instance (xxxx) of class xxxx. It is poss ...

  5. iOS 有TabBar的VC界面push后隐藏TabBar的方法

    当一个UITabbarController管理多个UINavigationController的时候, 我们要从这每一个UINavigationController中push一个ViewControl ...

  6. iOS开发手记 - iOS9.3 UINavigationController添加后不显示storyboard中viewcontroller里的控件的解决方法

    我原先是这么做的,通常也是这么做 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSD ...

  7. “git push”后返回“Error 403”解决方法

    问题描述: 1,mac ox系统,terminal上运行命令git push出现403错误: 2,代码是在别人的github(暂且叫origin branch吧)上克隆的,修改和添加了部分代码后欲提交 ...

  8. git push 后 链接总是灰色点击没有反应

    情况描述: mymon是openfalcon的监控mysql插件,从GitHub拉下来后,改动源码后,提交到公司内部的gitlab上,发现提交上去的图标总是灰色的,点击进不去,如下图所示.怎么解决? ...

  9. git push后自动部署

    前提,服务器已经装好ssh,本地也已经将ssh 公钥传到服务器对应位置 先用 pbcopy < ~/.ssh/PRIVATE_KEY.pub 将公钥复制到剪贴板:通过 ssh USER@SERV ...

随机推荐

  1. ASP.NET网站前端页面的复制

    网络普及的时代,遇到问题的首要解决方案并不是问人,而是找度娘.当我们找一些技术性的问题时,会发现很多解决方案在博客里,看看博主发表的博客总是惊叹不已,想要自己也有这么一个好习惯,把学到的东西以自己的方 ...

  2. Android开发中的PhoneGap基本使用

    一.关于PhoneGap Phonegap是一款开源的开发框架,旨在让开发者使用HTML.Javascript.CSS等Web APIs开发跨平台的移动应用程序.   二.PhoneGap在Andro ...

  3. Android获取屏幕宽度的4种方法

    方法一: WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); int width = w ...

  4. jQuery之点击弹出图标环形菜单

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  5. TFS2012常见问题及解答

    1.删除workItem工作项(包括Bug,用户场景,任务等) 需要利用到witadmin工具,目录在cd %programfiles%\Microsoft Visual Studio 11.0\Co ...

  6. Swift静态方法

    与静态属性类似,Swift中还定义了静态方法,也称为类型方法,所谓“类型”是指枚举.结构体和类.静态方法定义的方法也是与静态属性类似的,枚举和结构体的静态方法使用的关键字是static,类的静态方法使 ...

  7. UIDynamic 基础认识

    UIDynamic 是从iOS 7开始引入的一种新技术,属于UIKit框架,可以模拟现实生活中的物理现象,如:碰撞.抖动.摆动等 动力效果:有一个效果器,叫做“动力效果器”里面面可以添加“动力效果” ...

  8. ASP.NET实现在线人员实时显示

    在最近的学习中,参考其他资源,做了一个简单的在线人员显示的功能,总结了一下,思路如下: 1.定义一个全局的内存来作为在线人员列表 2.通过实时判断用户Session值,来判断某个用户的登录或离线 3. ...

  9. JavaScript--面向对象与原型(15)

    // ECMAScript有两种开发模式:1.函数式(过程化);2.面向对象(OOP); 一 创建对象 1.普通的创建对象 1 // 创建一个对象,然后给这个对象新的属性和方法; 2 var box ...

  10. asp.net中的Application概述

    全局应用程序类 从Application这个单词上大致可以看出Application状态是整个应用程序全局的.在ASP时代我们通常会在Application中存储一些公共数据,而ASP.NET中App ...