代碼
#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];
//添加的時(shí)候先只添加第一個(gè)視圖
[self.view addSubview:self.oneView];
[self.view sendSubviewToBack:self.oneView];
//先創(chuàng)建一個(gè)自定義類型(UIButtonTypeCustom)的按鈕漓摩!
btn_Rock = [UIButton buttonWithType:UIButtonTypeCustom];
//設(shè)置自定義類型按鈕的寬高!
btn_Rock.frame = CGRectMake(0, 0, 32, 28);
//設(shè)置自定義類型按鈕的圖片入客!
[btn_Rock setBackgroundColor:[UIColor greenColor]];
//添加按鈕的點(diǎn)擊事件管毙!
[btn_Rock addTarget:self action:@selector(btn_RockClick:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithCustomView:btn_Rock];
[self.navigationItem setRightBarButtonItem:item];
self.title = @"活動(dòng)";
}
-(void)btn_RockClick:(id)sender{
NSLog(@"點(diǎn)擊翻轉(zhuǎn)");
//防止暴力點(diǎn)擊切換,導(dǎo)致視圖切換出錯(cuò)桌硫,所以需要加個(gè)小技巧夭咬,當(dāng)點(diǎn)擊一次切換后就把按鈕的交互給關(guān)了!
btn_Rock.userInteractionEnabled = NO;
//執(zhí)行切換視圖的函數(shù)
[self doTransitionWithType];
//用定時(shí)器1秒(與切換視圖的動(dòng)畫一致)之后才喚醒切換按鈕的交互事件
[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切換動(dòng)畫
@param FromView 從 twoView 視圖開始
@param toView 切換到 oneView 視圖
@param duration 1秒的動(dòng)畫時(shí)間
@param options 動(dòng)畫方式----有很多總卓舵,這里選擇了從右開始翻轉(zhuǎn)
@param completion 當(dāng)執(zhí)行完動(dòng)畫之后刪除之前的 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切換動(dòng)畫
@param FromView 從 oneView 視圖開始
@param toView 切換到 twoView 視圖
@param duration 1秒的動(dòng)畫時(shí)間
@param options 動(dòng)畫方式----有很多總,這里選擇了從左開始翻轉(zhuǎn)
@param completion 當(dāng)執(zhí)行完動(dòng)畫之后刪除之前的 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)系作者