iOS開發(fā)實(shí)現(xiàn)簡單抽屜效果
本文實(shí)例為大家分享了iOS實(shí)現(xiàn)簡單抽屜效果的具體代碼,供大家參考,具體內(nèi)容如下
抽屜效果的原理:其實(shí)就是把兩個(gè)子控制器添加到一個(gè)RootViewController中,將子控制器的view添加到RootViewController的view上,然后改變子控制器view的frame實(shí)現(xiàn)抽屜的效果。
下面直接看看我自己寫的一個(gè)小demo。
RootViewController.h
//兩個(gè)子控制器leftView和midView @property(nonatomic,weak)UIViewController *leftView; @property(nonatomic,weak)UIViewController *midView;
RootViewController.m
- (void)viewDidLoad {
? ? [super viewDidLoad];
? ? //將leftView和midView添加到self中作為子控制器。將他們的view添加到self.view中
? ? [self addChildViewController:self.leftView];
? ? [self.view addSubview:self.leftView.view];
? ? [self addChildViewController:self.midView];
? ? [self.view addSubview:self.midView.view];
? ? //設(shè)置一個(gè)按鈕點(diǎn)擊實(shí)現(xiàn)抽屜效果
? ? UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
? ? leftButton.frame = CGRectMake(0, 50, 150, 150);
? ? [leftButton addTarget:self action:@selector(leftButtonPressed) forControlEvents:UIControlEventTouchUpInside];
? ? [leftButton setTitle:@"left" forState:UIControlStateNormal];
? ? [self.midView.view addSubview:leftButton];
}
-(void)leftButtonPressed
{
? ? //判斷抽屜是否是展開狀態(tài)
? ? if (self.midView.view.frame.origin.x == 0) {
? ? ? ? //通過動(dòng)畫實(shí)現(xiàn)view.fram的改變
? ? ? ? [UIView animateWithDuration:0.3 animations:^{
? ? ? ? ? ? /* ?W ?H ?屏幕實(shí)際大小宏
? ? ? ? ? ? ?* #define ScreenWidth [UIScreen mainScreen].bounds.size.width
? ? ? ? ? ? ?* #define ScreenHeight [UIScreen mainScreen].bounds.size.height
? ? ? ? ? ? */
? ? ? ? ? ? self.leftView.view.frame = CGRectMake(0, 0, W, H);
? ? ? ? ? ? self.midView.view.frame = CGRectMake(200, 50, W, H-50*2);
? ? ? ? } completion:^(BOOL finished) {
? ? ? ? }];
? ? }else{
? ? ? ? [UIView animateWithDuration:0.3 animations:^{
? ? ? ? ? ? self.midView.view.frame = CGRectMake(0, 0, W, H);
? ? ? ? } completion:^(BOOL finished) {
? ? ? ? }];
? ? }
}AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
? ? self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
? ? LeftViewController *leftView = [[LeftViewController alloc] init];
? ? MidViewController *midView = [[MidViewController alloc]init];
? ? RootViewController *rootView = [[RootViewController alloc]init];
? ? rootView.leftView = leftView;
? ? rootView.midView = midView;
? ? self.window.rootViewController = rootView;
? ? [self.window makeKeyAndVisible];
? ? return YES;
}運(yùn)行代碼,效果圖如下:


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS體驗(yàn)性優(yōu)化之RTL適配右滑返回的實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于iOS體驗(yàn)性優(yōu)化之RTL適配右滑返回實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
iOS開發(fā)中用imageIO漸進(jìn)加載圖片及獲取exif的方法
這篇文章主要介紹了iOS開發(fā)中中用imageIO漸進(jìn)加載圖片及獲取exif的方法,代碼演示為傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-09-09
簡單談?wù)刢/c++中#import、#include和@class的區(qū)別
對于#import,我想做過iOS開發(fā)的人應(yīng)該都不陌生。在開發(fā)過程中,當(dāng)我們需要聲明某一個(gè)類時(shí),都需要去引用。而#imclude的話,在我們學(xué)習(xí)C時(shí)就已經(jīng)知道了,他的作用也是引用聲明的意思。在表面上他們的作用似乎都是一樣的。但是在具體功能實(shí)現(xiàn)方式上,還是有著很大的區(qū)別。2018-01-01
解決Charles抓包https時(shí),無法查看CONNECT請求的問題
下面小編就為大家分享一篇解決Charles抓包https時(shí),無法查看CONNECT請求的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
iOS UITableView 拖動(dòng)排序?qū)崿F(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了iOS UITableView 拖動(dòng)排序?qū)崿F(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
iOS 本地視頻和網(wǎng)絡(luò)視頻流播放實(shí)例代碼
本篇文章主要介紹了iOS 本地視頻和網(wǎng)絡(luò)視頻流播放實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07

