iOS 控件定制程序员iOS进阶之路

iOS 如何让ScrollView的子视图不跟着一起滑动(美团外

2017-05-03  本文已影响273人  Zhui_Do
效果图.gif

经常看到有tableView的headView向上滑动时是压在tableview下面的,闲来无事就写了一下。

有两个问题需要解决:

1.如何把视图加在tableview上但是tableview滑动时做为子视图的headview还不跟着滑动。
2.如何设置tableview的起始位置,把headView 暴露出来,并且当tableview向上滑动时tableview不会回弹。

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    self.navigationController.navigationBarHidden = YES;
    UITableView *tableView = [UITableView new];
    tableView.frame = self.view.frame;
    
    [self.view addSubview:tableView];
    tableView.delegate = self;
    tableView.dataSource = self;
    
    UIImageView *view = [[UIImageView alloc] initWithFrame:(CGRectMake(0, -200, DZHWidth, 200))];
    view.image = [UIImage imageNamed:@"scrollImage1.jpg"];
    
    [tableView insertSubview:view atIndex:0];
   
    [view mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.view).offset(20);
        make.right.left.equalTo(self.view);
        make.height.mas_equalTo(200);
    }];
    tableView.contentInset = UIEdgeInsetsMake(200, 0, 0, 0);

    self.tableView = tableView;
    self.tableView.bounces = false;

}
    [view mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.view).offset(20);
        make.right.left.equalTo(self.view);
        make.height.mas_equalTo(200);
    }];
    [tableView insertSubview:view atIndex:0];
    tableView.contentInset = UIEdgeInsetsMake(200, 0, 0, 0);

主要是设置一下tableview的content inset,让他距离上方留下head view高度(200)的距离。
这里测试了tableview addsubview 和 tableview.tableHeadView 虽然都可以添加到tableView上,但是headView会在tableViewCell的上层,不能实现把headview压在下方的效果。

上一篇下一篇

猜你喜欢

热点阅读