uiscrollView UINavigation和uitabbar添加约束的问题

首先是层次问题, 我的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)

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

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

- (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 - 30) {

    }
    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);
}
时间: 2024-10-29 19:05:30

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

如何在UIScrollView的xib上添加子控件并添加AutoLayout约束

引言 自从苹果推出了autoLayout之后,作为开发者,深深的体验到了他的便捷之处,再也不用为适配不同屏幕布局UI而烦恼,我们仅仅需要和类关联一个xib文件,想上面放置我们需要的控件xib,并打好其相对于父视图以及同级视图的约束关系,这样我们就做好了不同屏幕的适配.但是奇怪的是UIScrollView上添加子控件,和之前的一样的操作,报的错却很吓人,那是为什么呢? 原因分析 因为UIScrollView想要能滑动的前提是要知道他的ContentSize的大小,我们直接向上面添加约束,他不知道自

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

第一次在项目中用storyboard做界面,一般的界面直接添加约束非常爽快 然后有个界面有scrollview,添加了约束还总是出错 刚开始使用了 wCompact,hRegular,滑动出现问题,有些界面滑动不了或者可以左右滑动 已经在viewDidLoad里面添加了scrollView的contentsize 约束什么的都没有问题,百思不得其解 后来上网查了一下资料 还是scrollView的contentsize的问题 scrollView的contentsize只能在viewDidApp

怎样使用AutoLayOut为UIScrollView添加约束

1.在ViewController中拖入1个UIScrollView,并为其添加约束 约束为上下左右四边与superview对齐 2.在scrollview中,拖入1个UIView,为了便于区分将其设为橙色. 3.为view添加约束 约束为上下左右四边与superview对齐 添加完这些约束后,我们发现出现了错误,不要理会 4.为view添加宽度约束,本例中,想达到的效果是scrollView可以竖向滚动,不要横向滚动, 因此,可以将view的宽度约束为与scrollView相同 5.接下来为v

使用AutoLayOut为UIScrollView添加约束图解及要点

1.在ViewController中拖入1个UIScrollView,并为其添加约束 约束为上下左右四边与superview对齐 2.在scrollview中,拖入1个UIView,为了便于区分将其设为橙色. 3.为view添加约束 约束为上下左右四边与superview对齐 添加完这些约束后,我们发现出现了错误,不要理会 4.为view添加宽度约束,本例中,想达到的效果是scrollView可以竖向滚动,不要横向滚动, 因此,可以将view的宽度约束为与scrollView相同 5.接下来为v

UIScrollView添加约束报错问题

UIScrollView如果拉到storyBoard上,按照其他视图一样添加约束,会发现报错,然后往上面添加视图同样报错,那么这到底是为什么呢? 其实,这和UIScrollView的contentSize有关联,因为无法确定它的大小,贸然的添加约束肯定不合理,只有当其中的布局都设置好了,根据其中的子控件来决定它的contentSize,这才是正确的做法. 那该如何解决这种问题呢,我觉得正确的做法如下: 1.拉取一个UIScrollView,可以拉动大小,但是不要添加约束. 2.然后拉取一个UIV

iOS 用xib给scrollView添加约束

之前习惯了使用纯代码布局,最近使用xib给scrollView添加约束时遇到了一些问题,查阅资料后总结一下. 1.在xib中添加一个滚动视图UIScrollView,上下左右约束都为0 2.在滚动视图上添加一个UIView,如果是水平方向滚动,设置UIView垂直居中.如果是竖直方向滚动,设置UIView水平居中.如果水平方向和竖直方向都需要滚动则不需要设置.设置UIView上下左右约束都为0. 3.如果是水平方向滚动,设置UIView的宽度.如果是竖直方向滚动,设置UIView的高度.如果水平

修改数据表——添加约束

比如,原来数据表根本就没有约束,或者说,约束不够.那么如何来添加约束呢? 添加约束 1.添加主键约束(只能一个) 2.添加唯一约束(可以多个) 3.添加外键约束() 4.添加默认约束() 现在,先创建 create table user2( username varchaer(10) not null , pid smallint unsigned ); show columns from user2; alter table user2 add id smallint unsigned ; s

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

如果向存在数据的表里添加约束,有可能会出现数据不符合检查约束而造成添加约束失败. 如: 这是一个表,为身份证号添加检查约束. USE DEmo--指向当前操作的数据库 GO ALTER TABLE Employee ADD CONSTRALNT CK_EmployeeID CHECK(LEN(EmployeeID=18) 然后会出现 报错意思是数据表里面的身份证号现有数据有不等于18的,与检查约束冲突,会添加失败. 用ALTER  TABLE Employee+ WITH NOCHECK可以解决

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

创建数据库: 1 CREATE DATABASE Test --要创建的数据库名称 2 ON PRIMARY 3 ( 4 --数据库文件的具体描述 5 NAME='Test_data', --主数据文件的逻辑名称 6 FILENAME='E:\project\Test_data.mdf', --主数据文件的物理名称 7 SIZE=5MB, --主数据文件的初始大小 8 MAXSIZE=100MB, --主数据文件的增长的最大值 9 FILEGROWTH=15% --主数据文件的增长率 10 )