今天在使用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. ubuntu忘记密码,忘记root密码的解决方法

    转载于http://forum.ubuntu.org.cn/viewtopic.php?t=272164 ubuntu的root默认是禁止使用的,在安装的时候也没要求你设置root的密码,和红帽系统系 ...

  2. CSS之图片旋转

    主方法为: var Img = function() { var T$ = function(id) { return document.getElementById(id); } var ua = ...

  3. 理解CPU内存管理

    概述:从设计层面理解CPU的内存模式,包括段式内存管理.页式内存管理以及虚拟化扩展内存管理.实际上,硬件支持与软件实现从来就不是能分开讲的,比如,Intel CPU架构师在选择CPU的硬件特性时,必然 ...

  4. Entity Framework 6.1-Database First介绍

    原文:Entity Framework 6.1-Database First介绍 这种方式是比较传统的以数据库为核心的开发模式.比较适合有数据库DBA的团队.或者数据库已存在的情况. 优缺点: 1.优 ...

  5. java调用peoplesoft提供的webservice接口

    使用到了soapui,apache-cxf,eclipse 1.使用soapui测试提供的地址有效性(如果没有soapui也可以直接在cmd命令行中使用wsdl2java命令生成客户端代码) wsdl ...

  6. Cocos2d-x实例:单点触摸事件

    addChild(boxC,30, kBoxC_Tag);                                                                        ...

  7. 开发者需要知道的11条HTML5小常识

    #HTML5: The Missing Manual# 如果说HTML是一部电影,那HTML5就是一次大转折.HTML本来是不会活过21世纪的.官方Web标准组织W3C在1998年对HTML就已经撒手 ...

  8. android 数据库的创建

    主java package com.itheima.createdatabase; import android.app.Activity; import android.content.Contex ...

  9. IPointCollection转IPolyline

    IPointCollection转线IPolyline: IPolyline pl = new PolylineClass(); IPointCollection ptc = pl as IPoint ...

  10. VS2005上一个坑:关于pch 的 error C1023

    昨天编译就报错: c1xx : fatal error C1023: ‘UnicodeDebug\ImEngine.pch’ : unexpected error with pch, try rebu ...