UIScrollView 属性

来源:互联网 发布:修复ubuntu引导 编辑:程序博客网 时间:2024/04/30 03:01

首先介绍下UIScrollView的相关概念

contentSize是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍。
contentOffset是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentoffset就是(0 ,-480),也就是y偏移了- 480(注意向下拉,偏移是负数,向上才是正数,这个我测试过的)
contentInset是scrollview的contentview的顶点相对于scrollview的位置,例如你的contentInset = (0 ,100),那么你的contentview就是从scrollview的(0 ,100)开始显示

(以上引用来自http://www.cnblogs.com/try2do-neo/archive/2011/10/13/2210532.html) 

 

看下面的用处
1.键盘遮挡。
有些输入框在View最下面,键盘调出来的时候,需要将输入框调整到可见区。如果View里控件少,那么直接修改frame就能实现,自己加点动画,效果可还不错。
但是如果控件很多,那么一个一个控件都修改frame太繁琐。如果将这些控件放到一个UIScrollView里,那么修改UIScrollView里的ContentOffSet的值。
比如默认情况下,ContentOffSet(0,0),键盘输入的时候,设置ScrollView的偏移为(0,150)(整个画面向上移动150的像素)等输入完成的时候再设置ScrollView为(0,0)
2.View 支持滚动
让整个View支持上下滚动。通过xib设置的View不支持Scroll,使用起来不同上线滚动。用户体验不太好。为了让普通的View也支持Scroll有2种办法
 1。将这个View放在TableView里.
 2。 在View里添加一个ScrollView,将所有其它的控件全放在这个ScrollView里。放在View里有个技巧。需要设置contentSize,比如你的View大小是(320,480),那么ScrollView的大小需要设置为(320,481),多一个像素出来,让其支持滚动,还是很好的。


另外UITableViewUIScrollView的子类,它们在上述属性又有所不同,tabelviewcontentsize是由它的下列方法共同实现的

- (NSInteger)numberOfSections;

- (NSInteger)numberOfRowsInSection:(NSInteger)section;

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;

它会自动计算所有的高度和来做为它的contentsizeheight.

例如你在delegate方法

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 100;

}

那么你的tabelviewcontentsize就是(320, 4400)


原创粉丝点击