iOS에서 CoreAnimation의 애니메이션 끝 확인(animationDidStop)
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
을 통해 애니메이션이 끝난 후의 일부 조작을 완성할 수 있지만 때때로 문제가 발생할 수 있다. 예를 들어 여러 CAAnimation 대상의delegate가 같은 대상이면 어느 CAAnimation 대상인지 구분해야 한다. 우리는 [xxx.layer animationForKey:@"key"]
를 통해CAAnimation 대상을 얻고 - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
방법 중의 anim
와 비교할 수 있다.그러나 때때로 항상 틀리면 다음과 같은 코드를 추가해야 한다yourAnimtion.removedOnCompletion = NO;
이렇게 하면
[xxx.layer animationForKey:@"key"];
를 통해 키에 대응하는 애니메이션을 찾을 수 있고, 다음에 필요한 애니메이션이 끝난 후의 동작을 추가할 수 있다.animationForKey :
이 애니메이션을 설정한 경우 다음을 수행합니다.
yourAnimtion.delegate = self;
애니메이션이 끝난 후에도 제거하지 않도록 하려면 다음과 같이 하십시오.
yourAnimtion.removedOnCompletion = NO;
그래서......self는 yourView를 가지고 있다-->yourView는 yourView를 가지고 있다.layer --> yourView.layer 보유 your Animtion, your Animtion 또self=>
그럼 왜 your Animtion이 self를 가지고 있을까요?왜냐하면
yourAnimtion.delegate = self;
너는 틀림없이 delegate가self를 강제로 인용하지 않을 거라고 생각할 것이다. 그러나 틀렸다.아래의 공식 코드를 보십시오
/* The delegate of the animation. This object is retained for the
* lifetime of the animation object. Defaults to nil. See below for the
* supported delegate methods. */
@property(nullable, strong) id delegate;
위에 쓰는
strong
나무가 있는데...순환 인용 문제 해결
애니메이션이 끝나는 delegate 메서드에서 다음을 수행합니다.
[yourView.layer removeAllAnimations];
또는
[yourView.layer removeAnimationForKey:yourKey];
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.