ios开发cell侧滑效果中uitabelview的cell的边距怎么设置

22817人阅读
MAC OS(28)
1.UITableView加载的顺序是先得到表的行的高度,也就是先调用heightForRowAtIndexPath方法,然后再调用cellForRowAtIndexPath,所以我们有两个办法实现自定义cell高度(解决不同section的不同行高问题)。
一:改变它的加载顺序,或者说白了就是计算好cell高度后,再次让它加载heightForRowAtIndexPath方法;
二:直接在heightForRowAtIndexPath计算,做判断,直接返回对应的高度。
以下是第一种方法的实例:
UITableView设置单元格的高度的方法
- (CGFloat)tableView:(UITableView *)tableViewheightForRowAtIndexPath:(NSIndexPath *)indexPath {
& & && return 64;
下面介绍如何扩大当前单元格并且缩小其他单元格:
// Somewhere in your header:
NSIndexPath *selectedCellIndexP
// And in the implementation file:
- (void)tableView:(UITableView *)tableViewdidSelectRowAtIndexPath:(NSIndexPath *)indexPath {
& & && selectedCellIndexPath = indexP
& & && // Forces the table view to callheightForRowAtIndexPath
&&&&[tableView reloadRowsAtIndexPaths:[NSArrayarrayWithObject:indexPath]withRowAnimation:UITableViewRowAnimationNone];
- (CGFloat)tableView:(UITableView *)tableViewheightForRowAtIndexPath:(NSIndexPath *)indexPath {
& & && // Note: Some operations like calling [tableViewcellForRowAtIndexPath:indexPath]
& & && // will call heightForRow and thus create astack overflow
& & && if(selectedCellIndexPath != nil
& & && & && &&& [selectedCellIndexPathcompare:indexPath] == NSOrderedSame)
& & && & && & return 128;
& & && return 64;
reloadRowsAtIndexPaths方法将重新调用heightForRowAtIndexPath使单元格改变高度。&
reloadRowsAtIndexPaths是在3.0.存储NSIndexPath的原因是因为不可能在堆栈不溢出的情况下在heightForRowAtIndexPath调用类方法例如cellForRowAtIndexPath
较好的方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
&&& static NSString *CellIdentifier = @&Cell&;
&&& UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
&&& if (cell == nil) {
&&& &&& cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
&&& &&& UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
&&& &&& label.tag = 1;
&&& &&& label.lineBreakMode = UILineBreakModeWordW
&&& &&& label.highlightedTextColor = [UIColor whiteColor];
&&& &&& label.numberOfLines = 0;
&&& &&& label.opaque = NO; // 选中Opaque表示视图后面的任何内容都不应该绘制
&&& &&& label.backgroundColor = [UIColor clearColor];
&&& &&& [cell.contentView addSubview:label];
&&& &&& [label release];
&&& UILabel *label = (UILabel *)[cell viewWithTag:1];
&&& NSString *
&&& text = [textArray objectAtIndex:indexPath.row];
&&& CGRect cellFrame = [cell frame];
&&& cellFrame.origin = CGPointMake(0, 0);
&&& label.text =
&&& CGRect rect = CGRectInset(cellFrame, 2, 2);
&&& label.frame =
&&& [label sizeToFit];
&&& if (label.frame.size.height & 46) {
&&& &&& cellFrame.size.height = 50 + label.frame.size.height - 46;
&&& else {
&&& &&& cellFrame.size.height = 50;
&&& [cell setFrame:cellFrame];
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
&&& UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
&&& return cell.frame.size.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:403055次
积分:5836
积分:5836
排名:第2707名
原创:155篇
转载:76篇
译文:12篇
评论:76条
(1)(2)(1)(1)(5)(6)(1)(1)(1)(1)(6)(7)(6)(1)(1)(1)(4)(3)(3)(7)(2)(1)(2)(2)(1)(8)(1)(3)(1)(1)(3)(5)(1)(2)(3)(2)(4)(3)(1)(9)(30)(19)(10)(9)(36)(25)}

我要回帖

更多关于 ios开发 cell滑动手势 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信