tableView的总结

scorllView(滚动视图)的总结:
几个常用属性:
1.scrollView的contentSize是用户能滚动的整体大小,而scrollView的frame中的size是其窗口的大小,既用户每次能看见的大小。如果向scroll中添加图片,建议吧contentSize设置成跟图片大小一样。
2.contentInset是内边距地设置,弹簧效果的关键词是bounces(bool变量),滚动条的关键词是indicator。
3.缩放:这个需要代理来实现UIScrollViewDelegate,viewForZoomingInScrollView方法是返回一个UIViwe,以确认哪个视图需要放大缩小,常用Tag值来标记。放大系数的关键词是zoomscale。
还有一个比较常用搞得方法是scrollViewDidScroll(滚动视图发生滚动的时候)可以监滚动视图的偏移量contentOffset.x和contentOffset.y,两个不同方向的偏移量。

tableView的总结:
1.重用机制:
当创建出tableView后,系统会生成一个NSMutableArray *visibaleCells和一个NSMutableDictnery *reusableTableCell,假定有100个cell(它们的类型一致)需要显示,而屏幕最大能显示10个,那么实际上只生成了11份cell的内存,而且这11个cell都有同一个重影标识符,当第11个cell完全显示出来的时候,第一个cell消失在屏幕中,cell1加入到reusaDictnery中,键是重用标识符,值是cell的内存首地址,由于只有一种类型的cell,所以可知整个字典最多只有一组键值对,如果tableView中有多种类型的cell,我们需要给不同类的cell设置不同的标识符,这样的话,字典中就会有多个键值对。cell11同时也会加入到visibaleCells的数组中,当继续往下滑,cell12会从重用字典中寻找跟他具有相同重用标识符的cell,由于字典中的cell1跟他具有同样的键,所以cell12会直接在cell1的基础上修改一下数据显示在屏幕上,并不会重新创建一份内存,同时cell2从屏幕中移除,cell2进入重用字典,由于cell1跟cell2有相同的键,所以cell1会从重用字典中移除,当然如果cell1跟cell2的键不一样,既他们有不同的重用标识符,则cell1不会被移除。

2.关于每一组中cell如何显示(tableView的重点难点)
首先有4种方法
(1)老式方法1
首先是从重用字典中寻找是否有可重用的cell,然后用if进行判断,如果没有则自行创建cell,cell的风格,以及内部子视图可以根据需要在if中创建。代码示例如下:

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identify];

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identify];

                    //if内写样式(Cell长什么样)

                    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

                    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectZero];

                    //规定:cell上的内容都必须加到cell的contentView中

                    [cell.contentView addSubview:imageView];

                    [imageView mas_makeConstraints:^(MASConstraintMaker *make) {

                        make.width.height.equalTo(40);

                        make.centerY.equalTo(0);

                        make.right.equalTo(-20);

                    }];

                    imageView.tag = 1000;

                }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值