SwipeTableView
SwipeTableView copied to clipboard
我现在有个需求,_swipeTableView.swipeHeaderView 的高度是不固定的。 比如点击一个地方,改变swipeHeaderView的高度。有办法实现吗
这个通常需要考虑交互,我研究一下。回头给你回复
麻烦了。
这个功能已经解决,在点击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:方法,运行查看效果