. 처음에는 CGImageMaskCreate를 사용해 보았지만 투명 "컷 아웃"이있는 이미지를 만든 다음 애니메이션 효과를 사용하여 이미지 아래로 스크롤했습니다.
귀하의 경우 린넨 이미지가 화면 크기에 해당됩니다. 그런 다음 이미지 편집기 (저는 김프를 사용합니다)를 사용하여 평면 색상을 사용하여 린넨에 상자 몇 개를 그립니다. 그런 다음 그 상자 색상을 투명하게 매핑하여 컷 아웃을 만듭니다. 이것을 할 수있는 다른 방법이 있지만 그것이 내가하는 방법입니다.
앱에서 두 개 이상의 이미지 뷰를 기본 뷰에 추가하십시오. 실행시 결정되므로 배치에 대해 걱정하지 마십시오. 이 이미지 뷰를 "스크롤"할 이미지가 포함되도록 설정해야합니다. 그런 다음 린넨이있는 UIImageView를 추가하여 맨 위에 올리면 전체 화면 크기를 차지합니다. 위쪽 UIImageView의 배경이 투명으로 설정되어 있는지 확인하십시오.
앱이 시작되면 "아래"이미지 뷰를 위에서 아래로 레이아웃 한 다음 "y"위치를 수정하여 아래 이미지 뷰를 스크롤하는 [UIView beginAnimation]을 시작하십시오. 이 애니메이션에는 상단 이미지보기가 화면에서 완전히 벗어난 경우 호출되는 완료 콜백이 있어야합니다. 그런 다음 완료 콜백에서 현재 상태를 레이아웃하고 애니메이션을 다시 시작합니다. 저는 여기에 사용되는 코드의 배짱이다 (그러나주의, 내 스크롤, 상단하지 바닥을 떠나 내 이미지가 모두 같은 크기였다 오른쪽이었다.)
- (void)doAnimationSet
{
[iv1 setFrame:CGRectMake(0, 0, imageWidth, imageHeight)];
[iv2 setFrame:CGRectMake(imageWidth, 0, imageWidth, imageHeight)];
[iv3 setFrame:CGRectMake(imageWidth*2, 0, imageWidth, imageHeight)];
[self loadNextImageSet];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:10];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[iv1 setFrame:CGRectMake(-imageWidth, 0, imageWidth, imageHeight)];
[iv2 setFrame:CGRectMake(0, 0, imageWidth, imageHeight)];
[iv3 setFrame:CGRectMake(imageWidth, 0, imageWidth, imageHeight)];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(doneAnimation:finished:context:)];
[UIView commitAnimations];
}
- (void)doneAnimation:(NSString *)aid finished:(BOOL)fin context:(void *)context
{
[self doAnimationSet];
}
이것은 당신에게 당신이 찾고있는 효과를 제공한다 에 대한. 행운을 빌어 요.
코드를 살펴 보는 과정에 있지만이 샘플 프로젝트는 내가 찾고있는 정확한 효과를 복제하는 것으로 보입니다. – SonnyBurnette
@SonnyBurnette 그렇습니다. 레이어를 기반으로 한 아름다운 솔루션을 놓칠 수 있으므로 아직 대답을 받아들이지 않는 것이 좋습니다. 내 솔루션은 좋은 아닌 많은 논리가 필요한 scrollView 대리자를 기반으로합니다. –
좋은 지적. 나는 수용을 들어 올리고 조금 후에 다시 방문 할 것이다. – SonnyBurnette