首先是层次问题, 我的storyboard中 底层是一个View(viewcontroller自带)上面添加了一个UIScrollview(添加约束, 上下左右全为0), 在UIScrollview上添加一个UITableView(添加约束: 上下左右全为0, 宽高分别为当前值, 做拖出宽高的约束, 添加到代码中, 设置可以改变他们的值)

①. 只有UIScrollview的情况, 这时只要把上面约束的宽高分别设下, 分别是[UIScreen mainScreen].bounds.size.width............ [UIScreen mainScreen].bounds.size.height就可以运行了

②. 添加一个UINavigation, 这时根据上面的情况, 只要把高修改成[UIScreen mainScreen].bounds.size.height - 64 (UINavigationBar和StatusBar的高度是64).这里如果出现了tableview下移了64, 就把view的top的约束改为-64

③. 去掉UINavigation, 添加一个UITabbarViewController, 把高修改成[UIScreen mainScreen].bounds.size.height - 49(Tabbar的高度是49)

④. 同时添加UInavigation和UITabbarViewController, 这时把高修改成[UIScreen mainScreen].bounds.size.height - 49 - 64, 同时要把上面的底层View的约束修改下, 我们当时添加的约束是上下左右全为0, 修改下方的为-49, 这样就行了

⑤. 这里要注意要把底层的scrollView的bounces vertical置为NO, 不然的话, 在极限的情况下 会出现莫名其妙的问题

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint scrollViewOffset = scrollView.contentOffset;
CGRect bounds = scrollView.bounds;
CGSize size = scrollView.contentSize;
// NSLog(@"size::%@", [NSValue valueWithCGSize:size]);
UIEdgeInsets inset = scrollView.contentInset;
CGFloat y = scrollViewOffset.y + bounds.size.height - inset.bottom;
CGFloat h = size.height;
// NSLog(@"%lf,,,,,%lf", y, h);
if (y > h - ) { }
UIScrollView* mysc = (UIScrollView *)scrollView.superview;
CGPoint scrollViewOffset1 = mysc.contentOffset;
CGRect bounds1 = mysc.bounds;
CGSize size1 = mysc.contentSize;
UIEdgeInsets inset1 = mysc.contentInset;
CGFloat y1 = scrollViewOffset1.y + bounds1.size.height - inset1.bottom;
CGFloat h1 = size1.height;
NSLog(@"%lf,,,,,%lf", y1, h1);
}

uiscrollView UINavigation和uitabbar添加约束的问题的更多相关文章

  1. iOS开发小技巧--UIScrollView内部子控件添加约束的注意点

    注意:用UIScrollView时布局子控件的时候,不要相对于UIScrollView来添加约束,这样做不是设置子控件的位置,反而是设置了UIScrollView的contentSize 子控件的尺寸 ...

  2. 怎样使用AutoLayOut为UIScrollView添加约束

    1.在ViewController中拖入1个UIScrollView,并为其添加约束 约束为上下左右四边与superview对齐 2.在scrollview中,拖入1个UIView,为了便于区分将其设 ...

  3. Storyboard中使用UIscrollView添加约束的开发总结

    第一次在项目中用storyboard做界面,一般的界面直接添加约束非常爽快 然后有个界面有scrollview,添加了约束还总是出错 刚开始使用了 wCompact,hRegular,滑动出现问题,有 ...

  4. iOS - UIScrollView xib添加约束的坑

    一.Storyboard中的UIScrollView使用自动布局 在使用storyboard和xib时,我们经常要用到ScrollView,还有自动布局AutoLayout,但是ScrollView和 ...

  5. iOS - XIB之AutoLayout添加约束

    XIB--AutoLayout添加约束 仿QQ登录界面: 说明:以下各图背景红色只是方便看清楚: 1.创建工程:创建xib文件 2.打开xib文件: (1).创建头像: 拖控件:uiimageview ...

  6. 使用SQL语句向已有数据表添加约束

    如果向存在数据的表里添加约束,有可能会出现数据不符合检查约束而造成添加约束失败. 如: 这是一个表,为身份证号添加检查约束. USE DEmo--指向当前操作的数据库 GO ALTER TABLE E ...

  7. 5-06使用Sql 语句为表添加约束

    约束名的命名规则推荐采用:约束类型_约束列. 为用户表添加约束 ALTER TABLE UserInfo ADD CONSTRALNT PK_UserId PRIMATY REY(UserId) CO ...

  8. olacle数据库员工表的创建,及插入数据,添加约束,删除列,查询数据的sql语句

    ---删除原有的员工表drop TABLE employee;---创建员工表CREATE TABLE employee       (       empno NUMBER(4) NOT NULL, ...

  9. SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束

    创建数据库: CREATE DATABASE Test --要创建的数据库名称 ON PRIMARY ( --数据库文件的具体描述 NAME='Test_data', --主数据文件的逻辑名称 FIL ...

随机推荐

  1. python 随机生成固定长度的字串

    from random import Random#随机生成4到20位的用户名def random_username(): username = '' chars = 'AaBbCcDdEeFfGgH ...

  2. poj 2774

    传送门:http://poj.org/problem?id=2774 裸的后缀数组,我只是为了贴个版而已 代码 #include <cstdio> #include <cmath&g ...

  3. JAVA 中XML的解析

    XML:  可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...

  4. Centos7永久修改主机名

    最近在编写centos6.x的启动脚本,考虑到以后系统会升到7.x,故想让脚本兼容7.x,还是有一些和6版本不一样的地址,修改主机名比较常用,特此记录一下 1.命令行修改: hostnamectl s ...

  5. TortoiseSVN客户端重新设置用户名和密码

    TortoiseSVN客户端重新设置用户名和密码 在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么 ...

  6. 微信小程序开发感受

    研究了大概有一个多星期的小程序了,说一下感受,之后会随时更新,一边学习,一边加上一部分学习代码和心得.我是一个前端厂里的新手,搬砖的时间不是很长,所以到一部分知识的理解浅之又浅,所以只能说自己的理解, ...

  7. Python if 和 for 的多种写法

    a, b, c = 1, 2, 3 [对比Cpp里:c = a >b? a:b]这个写法,Python只能常规的空行,缩进吗? 人生苦短,我用python,下面介绍几种if的方便的方法. 1.常 ...

  8. color.xml

    写控件的时候经常会遇到颜色选择问题,下面贴出常用颜色表示,方便选择. <?xml version="1.0" encoding="utf-8"?>& ...

  9. Solr atomic update JSON方式

    http://yonik.com/solr/atomic-updates/ Solr supports several modifiers that atomically update values ...

  10. VB.net的特殊语法(区别于C#.NET)

    1:引入命名空间(Imports) Imports System.Exception Imports System.Data.SqlClient Imports System.Security.Cry ...