CoderMJLee / MJRefresh

An easy way to use pull-to-refresh.
MIT License
13.8k stars 3.55k forks source link

关于设置刷新视图的mj_w和mj_x #1520

Closed iamkata closed 3 years ago

iamkata commented 3 years ago

我在你们的Demo中给tableView添加了内边距

- (void)example01
{
    __weak __typeof(self) weakSelf = self;

    //添加内边距
    self.tableView.contentInset = UIEdgeInsetsMake(0, 20, 0, 30);

    MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        [weakSelf loadNewData];
    }];
    header.backgroundColor = [UIColor systemPinkColor];
    self.tableView.mj_header = header;

    // 马上进入刷新状态
    [self.tableView.mj_header beginRefreshing];

    self.tableView.backgroundColor = [UIColor yellowColor];
}

你们的代码MJRefreshComponent.m里面:

self.mj_w = _scrollView.mj_w; //屏幕宽度
self.mj_x = -_scrollView.mj_insetL; // -20

所以这就导致我的mj_header是这样的,如下图:

左0 右0

我想,如果改成: 方式1:

self.mj_w = _scrollView.mj_w;
self.mj_x = 0;

效果如下:

左1 右1

或者方式2:

self.mj_w = _scrollView.mj_w +_scrollView.mj_insetL + _scrollView.mj_insetR;
self.mj_x = -_scrollView.mj_insetL;

效果如下:

左2 右2

方式1是不是会更好,我不知道这是不是bug,也许是我没弄明白代码误解了,说的不对的请批评指教。

wolfcon commented 3 years ago

这种情况自定义一下 Header. 因为根据需求不同, 实现也略有不同的.

自定义的话, 你需求什么就自己写一下.

override func placeSubviews() {
    super.placeSubviews()
    // 在这里自定义
    ...
}