2013-09-26 1 views
4

네이티브 iOS7 날씨 앱과 비슷한 효과를 어떻게 재현 할 수 있습니까?네이티브 날씨 앱과 같은 iOS7 상태 표시 줄

기본적으로 상태 표시 줄은보기의 배경을 상속하지만 내용은 표시되지 않습니다. 또한 하나의 픽셀 선은 상태 표시 줄의 높이가 20 픽셀 인 경우에만 표시되며 일부 내용이 언더 레이 인 경우에만 표시됩니다.

enter image description here

+1

내 생각은 구체적으로 상태 표시 줄 효과 아니지만, 오히려 사용자 정의 전환을하고있는 것입니다 때 jQuery과 스크롤 업 (기본적으로 투명 상태 표시 줄). – Ian

+0

그게 내가 생각하고 있었던거야. 하지만 어떻게 셀 내용을 숨기거나 마스크 할 수 있습니까? – DZenBot

+0

효과를 얻을 수 있었습니까? 나는 답을 찾고 있습니다. – Mark

답변

3

가장 좋은 것은 뷰의 clipSubview를 통해 확인하는 것입니다. 뷰에 컨텐츠를 넣고 왼쪽/오른쪽/아래 및 높이에 제약 조건을 적용합니다. 스크롤보기의 높이는 셀의 위치가 마이너스이고 그 시점에서 원하는 효과를 얻기 위해 내용 (클립)보기의 높이를 변경하기 시작한 것입니다.

이것은 실제 응용 프로그램으로 www.fancyinteractive.com에서 다운로드하여 살펴볼 수 있습니다. 이 기능은 다음 업데이트로 곧 제공 될 예정입니다.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
NSArray *visibleCells = [convertorsTableView visibleCells]; 

if (visibleCells.count) { 
    for (CVConverterTableViewCell *cell in visibleCells) { 
     CGFloat positionYInView = [convertorsTableView convertRect:cell.frame toView:self.view].origin.y; 

     [self clipLayoutConstraint:cell.clipHeightLayoutConstraint withPosition:positionYInView defaultHeight:cell.frameHeight]; 

     [cell.converterLabel layoutIfNeeded]; 
     [cell.iconImageView layoutIfNeeded]; 
    } 
} 

[self checkStatusBarSeperator:scrollView.contentOffset.y]; 
} 

- (void)clipLayoutConstraint:(NSLayoutConstraint *)constraint withPosition:(CGFloat)position defaultHeight:(CGFloat)defaultHeight { 
if (position < 0) { 
    constraint.constant = (defaultHeight - -position - 20 > 10) ? defaultHeight - -position - 20 : 10; 
} else 
    constraint.constant = defaultHeight; 
} 

Starting Page

Scrolling first item

Scrolling second itme

+0

clipHeightLayoutConstraint는 무엇입니까 – AVEbrahimi

+0

@AVEbrahimi 희망 이메일을 통해 당신을 도왔습니다. – invoodoo

1

당신은 테이블 뷰의 레이어에 마스크를 설정하여이 작업을 수행 할 수 있습니다. 그러나 셀 내부에서 애니메이션을 렌더링 할 수는 없지만 테이블 뷰 뒤에서 직접 애니메이션을 수행하고 테이블 뷰의 scrollview 대리자 메서드로 운동을 추적 할 수 있습니다. 여기

CALayer 마스크에 대한 몇 가지 정보입니다 : http://evandavis.me/blog/2013/2/13/getting-creative-with-calayer-masks

+0

아주 괜찮은 솔루션, 좋은 도전 같은 소리! 그러나 표보기의 레이어에 마스크를 적용하면 셀의 배경을 가릴 것인가? – DZenBot

+1

예. 내가 말했듯이, 당신은 스스로 세포 배경을 관리해야 할 것입니다. 하나의 셀에는 텍스트가 있고 다른 셀에는 배경이 있고 하나가 스크롤 될 때 다른 셀도 스크롤됩니다. –

+1

나는 이것이 contentView를 마스킹하고 backgroundView를 애니메이션으로 남겨 두었다고 생각한다. contentView의 모든 내용이 숨겨집니다. – Mark