인 스 턴 스 설명 iOS 의 CATransition 전환 애니메이션 사용

프로필
CATransition 은 CAAnimation 의 하위 클래스 로 전환 애니메이션 을 만 드 는 데 사 용 됩 니 다.
그림 층 에 화면 을 옮 기 고 화면 으로 옮 기 는 애니메이션 효 과 를 제공 할 수 있 습 니 다.iOS 는 Mac OS X 의 전환 애니메이션 보다 효과 가 적 습 니 다.
예 를 들 어 UINavigationController 네 비게 이 션 컨트롤 러 는 CATransition 전환 애니메이션 을 통 해 컨트롤 러 의 보 기 를 화면 에 밀어 넣 는 애니메이션 효 과 를 실현 합 니 다.
201661591630299.jpg (567×312)
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  ]; 
필드 전환 애니메이션 과도 효과
201661591717734.jpg (567×334)
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.그림 탐색
실례:
201661591740425.gif (274×249)
코드 구현

#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 가 가지 고 있 는 단일 보기 의 전환 애니메이션 함수 로 구현
201661591805078.gif (176×98)
코드 구현

#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++;
}

좋은 웹페이지 즐겨찾기