【iOS】折叠cell的使用

对于tableView中单元格的收起/展开

git地址

思路:创建好tableView后,把每一行单元格填充好对应的信息,在没有点击展开的情况下,tableViewframe还是显示的是第一个head单元格。当我们点击展开后,此时更改tableViewframe大小至能完全展示所有单元格的信息。

主要在于点击 展开/收起button 的事件响应函数去处理tableView的整体高度

- (void)pressFoldButton:(UIButton*)button {
    if (button.selected == YES) {
        button.selected = NO;
        _foldTableView.frame = CGRectMake(10, 100, 380, 50);
    } else if (button.selected == NO) {
        button.selected = YES;
        _foldTableView.frame = CGRectMake(10, 100, 380, 50 * _foldArray.count);
    }
}

上述代码中,在选中button后,调整tableView整体高度至能完全展示_foldArray数组中所有元素。button点击恢复时,tableView的高度恢复至只显示一行单元格的高度

完整代码如下:

@property (nonatomic, strong) UITableView* foldTableView;
@property (nonatomic, strong) NSMutableArray* foldArray;
@property (nonatomic, strong) UIButton* foldButton;
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    
    _foldTableView = [[UITableView alloc] initWithFrame:CGRectMake(10, 100, 380, 50) style:UITableViewStylePlain];
    _foldTableView.delegate = self;
    _foldTableView.dataSource = self;
    [self.view addSubview:_foldTableView];
    [_foldTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"normal"];
    
    _foldArray = [NSMutableArray arrayWithObjects:@"内容1", @"内容2", @"内容3", @"内容4", @"内容5", @"内容6", @"内容7", nil];
    
    _foldButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [_foldButton.layer setMasksToBounds:YES];
    [_foldButton.layer setCornerRadius:15.0];
    [_foldButton setTitle:@"点击展开" forState:UIControlStateNormal];
    [_foldButton setTitle:@"点击收起" forState:UIControlStateSelected];
    [_foldButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [_foldButton setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];
    _foldButton.backgroundColor = [UIColor yellowColor];
    _foldButton.titleLabel.font = [UIFont systemFontOfSize:20];
    [_foldButton addTarget:self action:@selector(pressFoldButton:) forControlEvents:UIControlEventTouchUpInside];
    _foldButton.frame = CGRectMake(0, 0, 380, 50);
    
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return _foldArray.count;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 50;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell* normalCell = [_foldTableView dequeueReusableCellWithIdentifier:@"normal" forIndexPath:indexPath];
    [normalCell.layer setMasksToBounds:YES];
    [normalCell.layer setCornerRadius:15.0];
    if (indexPath.row == 0) {
        [normalCell.contentView addSubview:_foldButton];
    } else {
        normalCell.textLabel.text = _foldArray[indexPath.row - 1];
        normalCell.textLabel.textColor = [UIColor blackColor];
        normalCell.textLabel.textAlignment = NSTextAlignmentCenter;
        normalCell.textLabel.font = [UIFont systemFontOfSize:20];
        normalCell.backgroundColor = [UIColor yellowColor];
    }
    return normalCell;
}

- (void)pressFoldButton:(UIButton*)button {
    if (button.selected == YES) {
        button.selected = NO;
        _foldTableView.frame = CGRectMake(10, 100, 380, 50);
    } else if (button.selected == NO) {
        button.selected = YES;
        _foldTableView.frame = CGRectMake(10, 100, 380, 50 * _foldArray.count);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值