iOS 시스템에서 보기 애니메이션 자세히 보기
iOS 시스템에서 Core Animation은 내장된 애니메이션 지원을 제공합니다. 애니메이션을 만드는 데 어떤 그림 코드도 필요하지 않습니다. 당신이 해야 할 일은 지정한 애니메이션을 자극하는 것입니다. 다음은 Core Animation에 맡기고 렌더링합니다. 한 마디로 하면 복잡한 애니메이션은 몇 줄의 코드만 있으면 됩니다.
애니메이션 효과를 추가할 수 있는 속성
iOS 보기 프로그래밍 가이드에 설명된 대로 UIVIew 내장 지원은 다음 속성에 애니메이션 효과를 추가합니다.
뷰의 속성 변화에 애니메이션 추가
속성의 변화에 애니메이션 효과를 추가하기 위해서는 이 속성을 수정한 코드를 지정한 애니메이션 코드 섹션 (animation block) 에 넣어야 합니다.애니메이션 코드 세그먼트에서 애니메이션을 지원하는 속성을 수정해야만 애니메이션 효과를 추가할 수 있습니다.
Begin/Commit 메서드를 사용하여 애니메이션 만들기
iOS 3.0 및 이전 시스템에서 UIVIew의 클래스 방법을 사용해야 합니다. beginAnimations:context:과commitAnimations를 사용하여 애니메이션 코드 세그먼트를 정의해야 합니다. begin과commit 사이의 코드는 특수한 애니메이션 라인에서 실행되기 때문에 메인 라인을 막지 않습니다. 예를 들어 두 개의 보기를 바꾸려면 코드가 이렇게 해야 합니다.
[UIView beginAnimations:@"ToggleViews" context:nil];
[UIView setAnimationDuration:1.0];
// Make the animatable changes.
firstView.alpha = 0.0;
secondView.alpha = 1.0;
// Commit the changes and perform the animation.
[UIView commitAnimations];
사마린에서iOS(MonoTouch) 플랫폼에서 begin/end 방법에 대한 귀속은 다음과 같습니다.
UIView.BeginAnimations("ToggleViews");
UIView.SetAnimationDuration(1.0)
this.FirstView.Alpha = 0.0;
this.SecondView.Alpha = 1.0;
UIView.CommitAnidations();
Begin/Commit 함수 사이에 다음 방법으로 애니메이션의 매개 변수와 옵션을 설정할 수 있습니다.lambda (block based method) 로 애니메이션 만들기
iOS 4.0 이후 코드 블록(code block)이라는 개념을 도입하여 코드 블록을 사용하여 애니메이션을 초기화할 수 있다. 이것도 iOS 4.0 이후 애플이 추천한 방법이다. iOS SDK가 제공하는 API는 다음과 같다.
[UIView animateWithDuration:1.0 animations:^{
self.firstView.alpha = 0.0;
self.secondView.alpha = 1.0;
}];
C#을 사용하면 다음과 같습니다.
UIView.Animate(1.0, () => {
this.FirstView.Alpha = 0.0f;
this.SecondView.Alpha = 1.0f;
});
이렇게 하면 간단한 점차적인 애니메이션을 실현하고 한 번만 실행할 수 있으며 통상적으로 수요를 만족시키지 못하고 좀 더 복잡한 것을 할 수 있다.
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
self.firstView.alpha = 0.0;
}
completion:^(BOOL finished){
[UIView animateWithDuration:1.0
delay:1.0
options:UIViewAnimationOptionCurveEaseOut animations:^{
self.firstView.alpha = 1.0;
}
completion:nil];
}];
해당하는 C# 코드는 다음과 같습니다.
UIView.Animate(
1.0,
0.0,
UIViewAnimationOptions.CurveEaseIn,
() => this.FirstView.Alpha = 0.0f,
() => {
UIView.Animate(
1.0,
1.0,
UIViewAnimationOptions.CurveEaseOut,
() => this.FirstView.Alpha = 1.0f,
null
);
}
);
내포된 애니메이션
iOS는 중첩된 애니메이션을 지원합니다. 즉, 한 애니메이션 코드 세그먼트에서 다른 애니메이션 코드 세그먼트를 다시 시작할 수 있습니다. 현재 애니메이션이 완성될 때까지 기다리지 않고 중첩된 애니메이션이 동시에 실행됩니다. 기본적으로 원래 애니메이션의 지연, 시간 길이, 가속 곡선 등을 계승하지만 이 옵션도 무시할 수 있습니다.예:
[UIView animateWithDuration:1.0
delay:1.0
options:UIViewAnimationOptionCurveEaseOut animations:^{
self.firstView.alpha = 0.0f;
//
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionOverrideInheritedCurve |
UIViewAnimationOptionCurveLinear |
UIViewAnimationOptionOverrideInheritedDuration |
UIViewAnimationOptionRepeat |
UIViewAnimationOptionAutoreverse
animations:^{
[UIView setAnimationRepeatCount:2.5];
self.secondView.alpha = 0.0f;
}
completion:nil];
}
completion:nil
];
해당하는 C# 코드는 다음과 같습니다.
UIView.Animate(
1.0,
1.0,
UIViewAnimationOptions.CurveEaseIn,
() => {
this.FirstView.Alpha = 0.0;
UIView.Animate(
1.0,
1.0,
UIViewAnimationOptions.OverrideInheritedCurve |
UIViewAnimationOptions.CurveLinear |
UIViewAnimationOptions.OverrideInheritedDuration |
UIViewAnimationOptions.Repeat |
UIViewAnimationOptions.Autoreverse,
() => {
UIView.SetAnimationRepeatCount(2.f);
this.SecondView.Alpha = 0.0;
},
null
);
},
null
);
Begin/Commit 메서드를 사용하는 애니메이션의 경우 네스트 호출 Begin/Commit 메서드를 사용하여 네스트된 애니메이션을 구현할 수도 있습니다. 예를 들어
UIView.BeginAnimations("Animation1");
// Animation code goes here
// Start another animation
UIView.BeginAnimations("Nested animation");
// nested animations code goes here.
UIView.CommitAnimations();
// other code
UIView.CommitAnimations();
이 C# 코드에 대응하는 ObjC 코드는 간단해서 쓰지 않겠습니다.애니메이션의 자동 회전을 실현하다
지정된 횟수를 자동으로 뒤집는 애니메이션을 만들 때 반복 횟수를 비정규 수치로 설정하는 것을 고려합니다.자동으로 뒤집히는 애니메이션의 경우 매번 순환은 원본 값에서 목표 값으로 바뀌고 원본 값으로 바뀌기 때문에 애니메이션이 끝난 후에 목표 값에 머무르려면 반복 횟수 설정을 0.5로 해야 한다. 그렇지 않으면 애니메이션이 천천히 원본 값으로 바뀌고 목표 값으로 빠르게 바뀌기 때문에 원래 기대했던 애니메이션 효과가 아닐 수 있다.
뷰 전환 애니메이션 만들기
보기 전환 애니메이션은 시각화 트리를 수정할 때 발생하는 인터페이스의 돌연변이를 줄일 수 있다. iOS 시스템에서 보기 전환 애니메이션을 대량으로 사용했다. 보기 전환 애니메이션은 주로 다음과 같은 두 가지 장면이 있다.
하위 뷰 수정
하위 뷰의 가시성을 수정하여 현재 뷰의 다른 상태를 나타낼 수 있습니다. 아래 두 뷰 전환의 예를 보면 iOS 4.0 이전에 보기 전환 애니메이션을 Begin/Commit 애니메이션에 추가해야 합니다. 코드는 다음과 같습니다.
iOS 4.0 이후에transitionWithView:duration:options:animations:completion:
[UIView beginAnimations:@"toggleView" context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[UIView setAnimationDuration:1.0];
// animation goes here
self.currentView.hidden = YES;
self.swapView.hidden = NO;
[UIView commitAnimations];
여기에는 애니메이션 부분의 코드만 있습니다. 애니메이션이 완성된 후에 setAnimationDelegate: 방법을 참고하여 UIAnimationDelegate를 설정하고 실현하십시오.하위 뷰 대체
하위 보기를 대체하려면transitionFromView:toView:duration:options:completion: 방법을 사용해야 합니다. 예시 코드는 다음과 같습니다.
UIView *fromView = (self.displayPrimary ? self.view : self.secondView);
UIView *toView = (self.displayPrimary ? self.secondView : self.view);
UIViewAnimationOptions option = (self.displayPrimary ? UIViewAnimationOptionTransitionFlipFromRight
: UIViewAnimationOptionTransitionFlipFromLeft);
[UIView transitionFromView:fromView toView:toView duration:1.0 options:option
completion:^(BOOL finished) {
if (finished) {
self.displayPrimary = !self.displayPrimary;
}
}
];
여러 애니메이션 링크
위의 지식이 있으면 여러 애니메이션을 연결하는 것은 매우 간단하다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.