兩個UIView點擊動畫切換

效果圖

代碼
#import "ViewController.h"

@interface ViewController (){
    UIButton *btn_Rock;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //先把需要的視圖初始化好
    self.oneView = [[OneView alloc] init];
    self.twoView = [[TwoView alloc] init];
    //添加的時候先只添加第一個視圖
    [self.view addSubview:self.oneView];
    [self.view sendSubviewToBack:self.oneView];
    
    
    
    //先創(chuàng)建一個自定義類型(UIButtonTypeCustom)的按鈕!
    btn_Rock = [UIButton buttonWithType:UIButtonTypeCustom];
    //設(shè)置自定義類型按鈕的寬高!
    btn_Rock.frame = CGRectMake(0, 0, 32, 28);
    //設(shè)置自定義類型按鈕的圖片!
    [btn_Rock setBackgroundColor:[UIColor greenColor]];
    //添加按鈕的點擊事件!
    [btn_Rock addTarget:self action:@selector(btn_RockClick:) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithCustomView:btn_Rock];
    [self.navigationItem setRightBarButtonItem:item];
    self.title = @"活動";
   
    
}

-(void)btn_RockClick:(id)sender{
    NSLog(@"點擊翻轉(zhuǎn)");
    //防止暴力點擊切換,導致視圖切換出錯,所以需要加個小技巧,當點擊一次切換后就把按鈕的交互給關(guān)了!
    btn_Rock.userInteractionEnabled = NO;
    //執(zhí)行切換視圖的函數(shù)
    [self doTransitionWithType];
    //用定時器1秒(與切換視圖的動畫一致)之后才喚醒切換按鈕的交互事件
    [self performSelector:@selector(isClick) withObject:nil afterDelay:1.0f];

}

-(void)isClick{
    //重新喚醒按鈕的交互事件!
    btn_Rock.userInteractionEnabled = YES;
}

-(void)doTransitionWithType{
    if ([[self.view subviews] containsObject:self.twoView ]) {
        
        /**
         UIView切換動畫
         @param FromView   從 twoView 視圖開始
         @param toView     切換到 oneView 視圖
         @param duration   1秒的動畫時間
         @param options    動畫方式----有很多總,這里選擇了從右開始翻轉(zhuǎn)
         @param completion 當執(zhí)行完動畫之后刪除之前的 twoView
         @return UIView
         */
        [UIView transitionFromView:self.twoView
                            toView:self.oneView
                          duration:1
                           options:UIViewAnimationOptionTransitionFlipFromRight
                        completion:^(BOOL finished){
                            [self.twoView removeFromSuperview];
                        }];
        [self.view addSubview:self.oneView];
        [self.view sendSubviewToBack:self.oneView];
    }
    else{
        
        /**
        UIView切換動畫
         @param FromView   從 oneView 視圖開始
         @param toView     切換到 twoView 視圖
         @param duration   1秒的動畫時間
         @param options    動畫方式----有很多總,這里選擇了從左開始翻轉(zhuǎn)
         @param completion 當執(zhí)行完動畫之后刪除之前的 oneView
         @return UIView
         */
        [UIView transitionFromView:self.oneView
                            toView:self.twoView
                          duration:1
                           options:UIViewAnimationOptionTransitionFlipFromLeft
                        completion:^(BOOL finished){
                            [self.oneView removeFromSuperview];
                        }];
        [self.view addSubview:self.twoView];
        [self.view sendSubviewToBack:self.twoView];
        
    }
}

@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容