UIScrollview的 约束 contentsize contentoffset contentinset layoutsubviews needlayout等影响布局的属性

很久没有写视图布局,最近发现写布局很不顺手,总结一下在处理UIScrollview的时候种种注意事项:

1.

self.automaticallyAdjustsScrollViewInsets = NO;

iOS7之后,当你在Nav上添加TableView的时候,你会发现tableView的位置并不是从你的起点开始的 ,这是因为在iOS7之后,如果nav上添加的第一个视图是UIScrollView的时候,系统会默认添加上64的间隔,解决方法是  你把第一个视图添加一个0.1的View使SCrollView成为第二个视图,或者取消系统默认效果.。

2.

关于layoutsubviews 和 setNeedsLayout, layoutIfNeeded

最近我在一个controller上面添加了一个controller,子controller上面是一个tableview,我需要获取tableview的偏移量来赋值给父类controller上滚动视图,使父类视图能够正常滑动。由于重新赋值了子类的frame,所以我预先标记了tableview:

   [self.historyInfoVc.tableview layoutIfNeeded];

  发现位置并非想象的那样,tableview进行了重新布局,但是子类控制器的view并未进行重新布局,这导致我的视图上出现了两个tableview错乱排列的情况,具体为什么出现这种情况我也不是很清楚。后来我把重新布局的属性改为了子类控制器的view,子类控制器的view在重新布局的时候一定会连并subviews一起布局,发现果然可行。关于这三个属性在此进行说明如下:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #00b1ff }
span.s1 { color: #ffffff }
span.s2 { color: #de38a5 }
span.s3 { color: #08fa95 }
span.s4 { }

时间: 2024-10-28 15:16:29

UIScrollview的 约束 contentsize contentoffset contentinset layoutsubviews needlayout等影响布局的属性的相关文章

iOS开发frame, contentSize, contentOffset, contentInset 区别联系浅析

1. 概述 iOS开发中,必然会涉及到布局相关问题,frame,bounds,contenSize,contentOffset,contentInset这几个布局相关概念让许多初学者感到困惑.虽然初步了解这几个概念,即可完成大部分界面的布局,但布局较复杂页面时就有点力不从心了. 2. 概念解析 2.1 frame frame是一个矩形区域,反映当前view相对于它的superview的位置关系,左上角的点(frame.origin)的x,y轴值确定了矩形区域的位置(frame.origin.x,

scrollView的几个属性contentSize contentOffset contentInset

contentSize是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍. contentOffset是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentoffset就是(0 ,480),也就是y偏移了480 contentInset是scrollview的contentview

IOS 中 contentsize contentoffset contentInset的区别

contentSize是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍. contentOffset是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentoffset就是(0 ,480),也就是y偏移了480 contentInset   是scrollview的contentv

UIScrollView控件及其三个常用属性:contentSize、contentInset和contentOffset

如果您对UIScrollView控件感到难以理解,下面是本人自己对UIScrollView控件的理解方式,按照我的思路,理解UIScrollView控件非常容易! 我对UIScrollView的构成理解: UIScollView由上下两个层构成:UIScrollView控件 = 上层(空心四边形线框) + 下层(实心内容视图),且上.下两层紧紧靠在一起,构成一个完整的UIScrollView控件 上层是该UIScrollView的四边形线框,空心,UIScrollView的frame指的就是这个

contentOffset、contentSize和contentInset

1.UIScrollView@property(nonatomic)CGPoint contentOffset;这个属性用来表示UIScrollView滚动的位置 @property(nonatomic)CGSize contentSize;这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远) @property(nonatomic)UIEdgeInsets contentInset;这个属性能够在UIScrollView的4周增加额外的滚动区域 2.UITableViewU

contentSize、contentInset和contentOffset的区分

一.  frame.bounds和center的区分 frame:由左边原点和矩形面积组成,其中原点代表其在父视图中的起点位置. bounds:就是原点始终为(0,0)的frame. center:本身矩形的中心点,加上原点的偏移. 1. 如下图所示,假设白色底层为View1,照片为视图View2,则其中View2的: frame: {(40, 40), 240, 380) bounds:    {(0, 0), 240, 380) center:    (160, 230)  -> 240/2

contentSize、contentInset和contentOffset

contentSize.contentInset和contentOffset 是 scrollView三个基本的属性. contentSize: The size of the content view. 其实就是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍. contentOffset:The point at which th

contentSize、contentInset和contentOffset区别【转】

这几个都是在ios程序中,经常会注意到的一些小细节,能否真正了解这些,对写ios程序也有很大的好处.frame 是UIView中表示此view的一个矩形面积,包括了view在它的superview中的一些几何上的标识.有起始坐标,也就是origin(CGPoint)和这个矩形面积的宽(width)和高(height)bounds 每个view,除了有对应它的superview的相关坐标外,它自己也有对应它自己的几何坐标,所以bounds就是标识它自己坐标关系的一个标识,它有和frame一样的属性

contentSize、contentInset和contentOffset 是 scrollView三个基本的属性区别和使用

contentSize.contentInset和contentOffset 是 scrollView三个基本的属性. contentSize: 其实就是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍. contentOffset: 是scrollview顶点相对于窗口顶点的偏移量,比如上个例子你拉到最下面,contentoffse