iOS开发

UITableView下拉背景色

2019-04-17  本文已影响25人  yitez

项目里有个需求,tableView下滑的时候,tableView偏移部分的颜色要保持和导航栏背景色同色(tableView背景是灰色,导航栏背景白色),不然会有撕裂感,类似微信的“他人资料”页的效果。
找了一下,tableview本身没有独立的控件,然后就用笨办法实现了一下。

创建一个白色背景的view,添加的tableview所在的的superview上。

@property (nonatomic, strong) UIView *topHeadBgView;
- (UIView *)topHeadBgView
{
    if (!_topHeadBgView) {
        _topHeadBgView  = [UIView new];
        _topHeadBgView.backgroundColor = [UIColor whiteColor];
    }
    return _topHeadBgView;
}

监听tableview的contentoffset。

[self.dataTableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew context:nil];
        [self addSubview:self.topHeadBgView];

白色view的尺寸跟着偏移量变就行了。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"contentOffset"])
    {
        NSValue *newvalue = change[NSKeyValueChangeNewKey];
        CGFloat newoffset_y = newvalue.UIOffsetValue.vertical;
        self.topHeadBgView.frame = CGRectMake(0, 0, SCREEN_WIDTH, -newoffset_y);
    }

}
上一篇 下一篇

猜你喜欢

热点阅读