假設場景:viewController里面有一個scrollView,該scrollView有一個headerView。現在需要將scrollView的滾動contentOffset與headerView的變化聯系起來,實現headerView跟隨scrollView的contentOffset動態變化的效果。
1、自定義headerView:
(1)使用一個指針接收viewController里面的scrollView。
(2)重寫willMoveToSuperview,使用KVO模式,為上述scorllView綁定一個Observer
[self.scrollView addObserver:self forKeyPath:@"contentOffset" options:(NSKeyValueObservingOptionNew) context:nil];設置監聽者為headerView本身
(3)其中headerView監聽函數為
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
CGPoint newOffset = [change[@"new"] CGPointValue];
[self updateSubViewsWithScrollOffset:newOffset];
}
這樣,在headerView里面可以實時得到scrollView的滾動contentOffSet,就可以做出與scrollView的contentOffset關聯的動畫效果。
2.viewController里面只需要將scrollView賦值給headerView暴露出來的接口就可以。
新聞熱點
疑難解答