나는 insertItemsAtIndexPaths
또는 moveItemAtIndexPath:toIndexPath:
같은 것을 말하고 있어요. 애니메이션 블록에서 배치하는 시도했지만 작동하지 않았다. 애니메이션이 .25 초 또는 0.3 초에 멈춰있는 것처럼 보이지만 느리게 진행하고 싶습니다. 문제를 일으킬만한 가치가없는 운동을 직접 구현하는 것 이외에 공개 API에서 이것이 가능한지 아무도 알지 못합니까?UICollectionViews의 애니메이션 속도를 변경할 수있는 방법이 있습니까?
답변
물론! 그러나 UIView
애니메이션 블록을 사용하여 제대로 할 수는 없습니다. Core Animation을 파헤쳐 야합니다.
컬렉션보기는 각 UICollectionViewCell
을 지원하는 CALayer
에 애니메이션을 유용하게 추가합니다. 그러나 자신 만의 레이아웃을 구현하거나 기존의 서브 클래스를 구현하는 경우 finalizeCollectionViewUpdates
메서드에서 이러한 애니메이션에 필요한 모든 수정 작업을 수행 할 수 있습니다. UICollectionViewLayout
클래스 문서에서
:
자신과 기본 위치 애니메이션을 교체하는 방법의 예입니다컬렉션보기 호출 장소에 변경 사항을 애니메이션을 이전하기 전에 마지막 단계로이 방법. 여기
- (void)finalizeCollectionViewUpdates
{
for (UICollectionViewCell *cell in [self.collectionView visibleCells])
{
CAAnimation *positionAnimation = [cell.layer animationForKey:@"position"];
if (positionAnimation)
{
[cell.layer removeAnimationForKey:@"position"];
CALayer *presentationLayer = cell.layer.presentationLayer;
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setFromValue:[NSValue valueWithCGPoint:presentationLayer.position]];
[animation setToValue:[NSValue valueWithCGPoint:cell.layer.position]];
[animation setDuration:0.4];
[cell.layer addAnimation:animation forKey:@"position"];
}
}
}
CALayer
에 애니메이션 관련 방법에
봐 당신이 무엇에 애니메이션이 현재 실행중인 팔 수있는 방법을 볼 수 귀하의 레이어에. 당신도 창의성 및 오버 슈트를 추가/당신이 생각할 수있는 다른 CAKeyframeAnimation
또는 아무것도를 사용하여 효과를 반송 할 수이 방법을 사용
. 또한 일부 애니메이션 (크기와 같은)을 선택적으로 비활성화하고 다른 애니메이션 (위치와 같은)을 유지하는 것과 같은 작업을 수행 할 수도 있습니다.
복사 여기에서이 이상은 : https://stackoverflow.com/a/18392148/1751266
당신의 CALayer 어떤 애니메이션 속도를 변경할 수 있습니다. UICollectionView이 다음과 같은 모습이되도록
[self.collectionView.viewForBaselineLayout.layer setSpeed:0.1f];
그리고 당신은 원래의 속도를 다시 변경할 수 있습니다
#import <QuartzCore/QuartzCore.h>
: 이것은 당신이 QuartzCore을 수입해야 할 수도 있습니다 작동하려면
[self.collectionView.viewForBaselineLayout.layer setSpeed:1.0f];
을 애니메이션이 적용된 UIImageViews 등을 포함하여 동일한 레이어의 다른 애니메이션에도 영향을 미치므로 보상이 필요할 수 있습니다.
- 1. Silverlight 테마에서 애니메이션 속도를 변경할 수 있습니까?
- 2. JQuery 애니메이션 : 애니메이션 중에 속도를 변경할 수 있습니까?
- 3. TcpClient 연결 속도를 향상시킬 수있는 방법이 있습니까?
- 4. 안드로이드에서 GPS없이 속도를 얻을 수있는 방법이 있습니까?
- 5. RTC에서 라벨 색상을 변경할 수있는 방법이 있습니까?
- 6. UIBarButtonItem의 텍스트 색상을 변경할 수있는 방법이 있습니까?
- 7. 미디어 요소의 속도를 변경하는 방법이 있습니까
- 8. VisualHg가 hg.exe를 호출하는 속도를 변경할 수 있습니까?
- 9. 애니메이션 GIF의 속도를 제어하려면 어떻게해야합니까?
- 10. 레이크 속도를 높이는 방법이 있습니까?
- 11. COM의 속도를 높이는 방법이 있습니까?
- 12. C에서 지원되는 전송 속도를 얻을 수있는 방법이 있습니까?
- 13. 바이트 코드를 실행하는 동안 JVM 속도를 알 수있는 방법이 있습니까?
- 14. AS3에서 사운드의 재생 속도를 변경할 수 있습니까?
- 15. 애니메이션 : 시간이 아닌 속도를 지정하십시오.
- 16. jQuery로 애니메이션 속도를 변경하십시오.
- 17. 루핑 애니메이션 속도를 늦추십시오.
- 18. 재생 속도를 변경할 수있는 .NET 비디오 재생 라이브러리?
- 19. iPhone 설정 번들, 글꼴을 변경할 수있는 방법이 있습니까?
- 20. PHP (Ubuntu)에서 현재 사용자를 변경할 수있는 방법이 있습니까?
- 21. Lucene의 임기를 기준으로 점수를 변경할 수있는 방법이 있습니까?
- 22. NodeJS에서 기본 세션 테이블 필드 이름을 변경할 수있는 방법이 있습니까?
- 23. major.minor.build에서 major.build.minor로 제품 버전을 변경할 수있는 방법이 있습니까?
- 24. SharePoint에서 문서 라이브러리보기를 사용자 단위로 변경할 수있는 방법이 있습니까?
- 25. combox에서 특정 항목의 배경을 변경할 수있는 방법이 있습니까?
- 26. Silverlight에서 프로그래밍 방식으로 Data/ItemTemplate을 변경할 수있는 방법이 있습니까?
- 27. 필요한 tinymce 파일의 경로를 변경할 수있는 방법이 있습니까?
- 28. 인터페이스 빌더에서 View Controller 클래스를 변경할 수있는 방법이 있습니까?
- 29. 사용자가 wxStyledTextCtrl을 변경할 때 알림을받을 수있는 방법이 있습니까?
- 30. 설정을 추가하여 TextView 글꼴 유형을 변경할 수있는 방법이 있습니까?