인 스 턴 스 설명 iOS 의 CATransition 전환 애니메이션 사용
CATransition 은 CAAnimation 의 하위 클래스 로 전환 애니메이션 을 만 드 는 데 사 용 됩 니 다.
그림 층 에 화면 을 옮 기 고 화면 으로 옮 기 는 애니메이션 효 과 를 제공 할 수 있 습 니 다.iOS 는 Mac OS X 의 전환 애니메이션 보다 효과 가 적 습 니 다.
예 를 들 어 UINavigationController 네 비게 이 션 컨트롤 러 는 CATransition 전환 애니메이션 을 통 해 컨트롤 러 의 보 기 를 화면 에 밀어 넣 는 애니메이션 효 과 를 실현 합 니 다.
CATransition 헤더 파일
애니메이션 속성:
type:애니메이션 과도 형식
subtype:애니메이션 과도 방향
startProgress:애니메이션 시작 점(전체 애니메이션 의 백분율)
endProgress:애니메이션 종점(전체 애니메이션 의 백분율)
......
#import <QuatzCore/CAAnimation.h>
CATransition *myTransition=[CATransition animation];// CATransition
myTransition.duration=0.3;// 0.3
myTransition.timingFunction=UIViewAnimationCurveEaseInOut;// ,
myTransition.type=kCATransionPush;//
myTransition.subtype=kCATransitionFromLeft;//
// , 。 , :
[[self.view.superview layer]addAnimation:myTransition forKey:nil ];
// , 。 , , :
[ self.view.layer addAnimation:myTransition forKey:nil ];
[ self.view addSubView:newView ];
[oldView removeFromSuperview];
// , 。
[ navigationController.view.layer addAnimation:myTransition forKey:nil ];
필드 전환 애니메이션 과도 효과2.view 류 자체 필드 애니메이션 함수
1.단일 보기
+(void)transitionWithView:(UIView*)view duration:(NSTimeInterval)duration options:
(UIViewAnimationOptions)options
animations:(void(^)(void))animations
completion:(void(^)(BOOLfinished))completion;
매개 변수 설명:
애니메이션 지속 시간
view:전환 애니메이션 보기 가 필요 합 니 다.
options:필드 전환 애니메이션 의 종류
animations:보기 속성 을 바 꾸 는 코드 를 이 block 에 놓 습 니 다.
completion:애니메이션 이 끝나 면 이 block 을 자동 으로 호출 합 니 다.
2.이중 보기
+ (void)transitionFromView:(UIView*) fromView
toView:(UIView*) toViewduration:(NSTimeInterval)durationoptions:(UIViewAnimationOptions) options
completion:(void(^)(BOOLfinished))completion;
매개 변수 설명:
애니메이션 지속 시간
options:필드 전환 애니메이션 의 종류
animations:보기 속성 을 바 꾸 는 코드 를 이 block 에 놓 습 니 다.
completion:애니메이션 이 끝나 면 이 block 을 자동 으로 호출 합 니 다.
응용
주의:
필드 전환 애니메이션 사용 주의 점:필드 전환 코드 는 필드 전환 애니메이션 코드 와 함께 써 야 합 니 다.그렇지 않 으 면 유효 하지 않 습 니 다.
1.그림 탐색
실례:
코드 구현
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageV;
@end
@implementation ViewController
// : : ,
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// :
/** */
static int index = 2;
NSString *imageName = [NSString stringWithFormat:@"%d",index];
_imageV.image = [UIImage imageNamed:imageName];
index++;
if (index == 4) {
index = 1;
}
/** */
//
CATransition *anim = [CATransition animation];
//
anim.type = @"pageCurl";
//
anim.subtype = kCATransitionFromLeft;
anim.duration = 3;
[_imageV.layer addAnimation:anim forKey:nil];
}
@end
2.아이콘 3D 뒤 집기:UIView 가 가지 고 있 는 단일 보기 의 전환 애니메이션 함수 로 구현코드 구현
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) UIImageView *iconView;
@end
@implementation ViewController
- (void)viewDidLoad{
[super viewDidLoad];
UIImageView *iconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1"]];
[self.view addSubview:iconView];
iconView.center = self.view.center;
iconView.backgroundColor = [UIColor greenColor];
self.iconView = iconView;
//
self.iconView.layer.cornerRadius = self.iconView.frame.size.width * 0.5;
self.iconView.clipsToBounds = YES;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// UIView
[UIView transitionWithView:self.iconView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ /** ,*/
// , 1, 2 -》 1 2
self.iconView.image = [UIImage imageNamed:@"2"];
} completion:^(BOOL finished) {
NSLog(@"completion");
/** , 1 , */
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 1 ,
[UIView transitionWithView:self.iconView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{ // , , 1 -》 2 1
self.iconView.image = [UIImage imageNamed:@"1"];
} completion:nil];
});
}];
}
@end
3.보기 간 전환 애니메이션:UIView 자체 쌍 보기 간 의 전환 애니메이션 함수 로 구현
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
/**< imageView1 */
@property (nonatomic, strong) UIView *view1;
/**< imageView2 */
@property (nonatomic, strong) UIView *view2;
@end
@implementation ViewController
- (void)viewDidLoad{
[super viewDidLoad];
self.view.backgroundColor = [UIColor blackColor];
// 1. scrollView view2
UIView *view2 = [[UIView alloc] init];
view2.backgroundColor = [UIColor greenColor];
[self.scrollView addSubview:view2];
self.view2 = view2;
// 2. scrollView view1
UIView *view1 = [[UIView alloc] init];
view1.backgroundColor = [UIColor redColor];
[self.scrollView addSubview:view1];
self.view1 = view1;
// 3. frame
CGFloat scrollViewW = self.scrollView.frame.size.width;
CGFloat scrollViewH = self.scrollView.frame.size.height;
view1.frame = CGRectMake(0, 0, scrollViewW, scrollViewH);
view2.frame = CGRectMake(0, 0, scrollViewW, scrollViewH); // CGRectMake(scrollViewW, 0, scrollViewW, scrollViewH);
// 4. scrollView
self.scrollView.contentSize = CGSizeMake(scrollViewW, scrollViewH);
//
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];
[self.scrollView addGestureRecognizer:tap];
}
int i = 1;
// scrollView,
- (void)tapClick:(UITapGestureRecognizer *)tap{
if (i % 2 != 0) {
[UIView transitionFromView:self.view1 toView:self.view2 duration:1.0 options:UIViewAnimationOptionTransitionFlipFromTop completion:nil];
}else{
[UIView transitionFromView:self.view2 toView:self.view1 duration:1.0 options:UIViewAnimationOptionTransitionFlipFromBottom completion:nil];
}
i++;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.