//
//  GMBaseTableView.m
//  Gengmei
//
//  Created by 翟国钧 on 15/1/14.
//  Copyright (c) 2015年 Wanmeichuangyi. All rights reserved.
//

#import "GMTableView.h"
#import "UIView+Layout.h"

@implementation GMTableView

- (instancetype)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:coder];
    if (self) {
        [self setup];
    }
    return self;
}


- (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style{
    self = [super initWithFrame:frame style:style];
    if (self) {
        [self setup];
    }
    return self;
}

- (void)setup{
    self.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
    self.separatorStyle = UITableViewCellSeparatorStyleNone;
}

@end

@implementation GMTableView (FixWierdTableHeaderAnimation)


- (void)fixWierdTableHeaderAnimationWhenRefreshFinish{

    if (self.tableHeaderView.height > 0) {
        return;
    }

    // 我们希望在拖动时 section header 可以浮在上面,所以使用 scrollView.dragging 来区分。
    if (self.dragging) {

        // 在手动拖拽时,立即设置 contentInset 为 UIEdgeInsetsZero,就可以保证 section header 浮在上面。
        self.contentInset = UIEdgeInsetsZero;
    }else{

        // 下拉时, 这两个分支保证在下拉过程及刷新后, section 及 table 能回复到正确位置
        CGFloat sectionHeaderHeight = 64;

        // 下拉刷新结束,scrollView 自动复位,那么此时也立即改变 UIEdgeInsetsMake 以保证 section header 能跟随 scroll view 一起动
        if (self.contentOffset.y < sectionHeaderHeight && self.contentOffset.y >= 0) {
            self.contentInset = UIEdgeInsetsMake(-self.contentOffset.y, 0, 0, 0);
        }

        // 当 table view 恢复到原来的位置,其实 contentInset,contentOffset 已经被我们改变,要恢复到初始状态
        else if (self.contentOffset.y == sectionHeaderHeight) {

            self.contentInset = UIEdgeInsetsZero;
            self.contentOffset = CGPointZero;
        }
    }
}

@end