2016-12-25 4 views
0

내 개인 앱에 대한 Spotify 앱의 동작을 다시 만들고 싶습니다.IOS - autolayout을 사용하여 스크롤 가능한 tableview 헤더를 얻는 방법

일종의 테이블보기이지만 헤더보기는 동적으로 크기가 조정됩니다. 기본적으로 헤더는 최대 크기이지만 사용자가 테이블 뷰 윗면을 스크롤하면 최소 크기를 유지할 때까지 동적으로 헤더 뷰가 느슨해집니다. 헤더보기는 항상 표시되어야합니다. 내보기를 설정하기위한 스토리 보드에 자동 레이아웃 사용하고있는 방법으로 http://giftrending.com/public/upload/gifs/14827016661482701665.gif

:

여기에 내가 재현 찾고 행동을 보여주는 GIF입니다.

도움 주셔서 감사합니다.

+0

가능하면 전체 애니메이션을 보여주는 gif를 게시 할 수 있습니다. 이전 및 이후 이미지를 사용하여 접근 방식을 결정하기가 매우 어렵습니다! 하지만 대부분의 동작은 'UITableViewCell'과 UIView를 사용하여 사용자가 스크롤하는 양에 따라 적절한 애니메이션을 사용하여 복제 할 수 있습니다. – Rikh

+0

높이를 결정하는 코드를 보여줍니다. – iphonic

+0

spotify 앱은 아마도 collectionview를 사용합니다. – Groot

답변

1

이것은 최적화 된 코드는 아니지만 다음과 같이 시도해 볼 수 있습니다.

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ 
    return headerHeight; 
} 
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    CGFloat maxHeaderHeight = 400; 
    CGFloat minHeaderHeight = 40; 
    if (self.lastContentOffset > scrollView.contentOffset.y){ 
     // scrolling down 
     if(headerHeight < maxHeaderHeight){ 
      headerHeight += scrollView.contentOffset.y; 
     } 
     headerHeight = MIN(headerHeight, maxHeaderHeight); 
    }else if (self.lastContentOffset < scrollView.contentOffset.y){ 
     // scrolling up 
     if (headerHeight > minHeaderHeight) { 
      headerHeight -= scrollView.contentOffset.y; 
     } 
     headerHeight = MAX(headerHeight, minHeaderHeight); 
    } 
    self.lastContentOffset = scrollView.contentOffset.y; 
    [self.tableView reloadData]; 

} 
+0

감사합니다. 테스트를 해봤지만 항상 그렇지는 않습니다. 사실 때때로, 특히 테이블의 극값에. 알고리즘에 의해 평가되지 않는 "반환"효과가 있습니다. 나는 내 시험을 계속한다. ^^ –

관련 문제