SwipeTableView icon indicating copy to clipboard operation
SwipeTableView copied to clipboard

我现在有个需求,_swipeTableView.swipeHeaderView 的高度是不固定的。 比如点击一个地方,改变swipeHeaderView的高度。有办法实现吗

Open songzhiming opened this issue 9 years ago • 3 comments

songzhiming avatar Aug 17 '16 14:08 songzhiming

这个通常需要考虑交互,我研究一下。回头给你回复

liangdrime avatar Aug 17 '16 15:08 liangdrime

麻烦了。

songzhiming avatar Aug 17 '16 15:08 songzhiming

这个功能已经解决,在点击header的时候,对当前item的offset与inset(或者tableHeaderView的height进行调整),具体代码如下

// tap to change header's frame
- (void)tapHeader:(UITapGestureRecognizer *)tap {

    CGFloat changeHeight = 50; // or -50, it will be parallax.
    UIScrollView * currentItem = _swipeTableView.currentItemView;
#if !defined(ST_PULLTOREFRESH_HEADER_HEIGHT)
    CGPoint contentOffset = currentItem.contentOffset;
    UIEdgeInsets inset = currentItem.contentInset;
    inset.top += changeHeight;
    contentOffset.y -= changeHeight;  // if you want the header change height from up, not do this.

    NSMutableDictionary * contentOffsetQuene = [self.swipeTableView valueForKey:@"contentOffsetQuene"];
    [contentOffsetQuene removeAllObjects];

    [UIView animateWithDuration:.35f delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        _tableViewHeader.st_height += changeHeight;
        currentItem.contentInset = inset;
        currentItem.contentOffset = contentOffset;
    } completion:^(BOOL finished) {
        [self.swipeTableView setValue:@(self.tableViewHeader.st_height) forKey:@"headerInset"];
    }];
#else
    UIView * tableHeaderView = ((UITableView *)currentItem).tableHeaderView;
    tableHeaderView.st_height += changeHeight;

    [UIView animateWithDuration:.35f delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        _tableViewHeader.st_height += changeHeight;
        [currentItem setValue:tableHeaderView forKey:@"tableHeaderView"];
    } completion:^(BOOL finished) {
        [self.swipeTableView setValue:@(self.tableViewHeader.st_height) forKey:@"headerInset"];
    }];
#endif

}

示例代码已经提交,并且header中imageview做了调整。可以在demo中替换点击header的tapHeader:方法,运行查看效果

liangdrime avatar Aug 18 '16 12:08 liangdrime