tableView:实现导航栏渐变和顶部禁止弹簧效果

本文介绍如何使用 iOS 中的 UITableView 并自定义其滚动效果。通过 ReactiveCocoa 框架实现表视图滚动时导航栏透明度的平滑过渡,并展示了如何设置单元格的高度及数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, -20, self.view.bounds.size.width, self.view.bounds.size.height+20)];
    tableView.dataSource = self;
    tableView.delegate = self;
    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
    
    [self.view addSubview:tableView];
    
    RACSignal *signal = [tableView rac_valuesForKeyPath:@"contentOffset" observer:self];
    RAC(self.navigationController.navigationBar,alpha) = [signal map:^id(NSValue * x) {
        CGFloat offset = tableView.contentOffset.y;
        if (offset<=-20) {
            tableView.bounces = NO;
        }
        else{
            tableView.bounces = YES;
        }
        CGFloat delta = offset / 20.f + 1.f;
        delta = MAX(0, delta);
        CGFloat ofy = 200-CGRectGetMaxY(self.navigationController.navigationBar.frame);
        CGFloat alp = (offset+20)/ofy;
        return [NSNumber numberWithFloat:MIN(1, alp)];
    }];
    
}


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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 20;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
    cell.textLabel.text = @"hahahahahahahh";
    return cell;
}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值