标签:
1.添加系统框架
// MenuViewController.h
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface MenuViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
@end
//
// MenuViewController.m
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import "MenuViewController.h"
#import "UIApplication+util.h"
@interface MenuViewController ()
@property (nonatomic,retain) UITableView *tableView;
@property (nonatomic,retain) NSArray *datasource;
@end
@implementation MenuViewController
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.datasource.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *reuseID = @"reuseId";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseID];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseID];
}
cell.textLabel.text = [self.datasource objectAtIndex:indexPath.row];
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSString *rootViewControllerName = NSStringFromClass([[[UIApplication sharedApplication] sideViewController].rootViewController class]);
if ([[self.datasource objectAtIndex:indexPath.row] isEqualToString:rootViewControllerName]) {
[[[UIApplication sharedApplication] sideViewController] popViewControllerAnimated:YES];
NSLog(@"直接弹出");
return;
}
UIViewController *vc = [[NSClassFromString([self.datasource objectAtIndex:indexPath.row]) alloc] init];
[[[UIApplication sharedApplication] sideViewController] popViewControllerWithNewCenterController:vc animated:YES];
}
#pragma mark -
#pragma mark init methods
-(NSArray *)datasource
{
if (!_datasource) {
_datasource = [[NSArray alloc] initWithObjects:@"MainViewController",
@"HUDViewController",
@"ActivityBarViewController",
@"AudioViewController",
nil];
}
return _datasource;
}
-(UITableView *)tableView
{
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped];
_tableView.dataSource = self;
_tableView.delegate = self;
}
return _tableView;
}
-(void)buildLayout
{
[self.view addSubview:self.tableView];
}
#pragma mark -
#pragma mark NESMenuViewController lifecycle
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self buildLayout];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
// BaseViewController.h
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface BaseViewController : UIViewController
@end
//
// BaseViewController.m
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import "UIApplication+util.h"
#import "BaseViewController.h"
#import "MenuViewController.h"
@interface BaseViewController ()
@end
@implementation BaseViewController
-(void)showSideViewHandler:(id)sender
{
MenuViewController *menu = [[MenuViewController alloc] init];
[[[UIApplication sharedApplication] sideViewController] pushViewController:menu onDirection:PPRevealSideDirectionLeft animated:YES];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc] init];
[gesture addTarget:self action:@selector(showSideViewHandler:)];
gesture.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:gesture];
self.view.backgroundColor = [UIColor whiteColor];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
// MainViewController.h
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import "BaseViewController.h"
@interface MainViewController : BaseViewController
@end
//
// MainViewController.m
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import "UIApplication+util.h"
#import "MainViewController.h"
#import "MenuViewController.h"
@interface MainViewController ()
@end
@implementation MainViewController
-(void)btnClicked:(id)sender
{
MenuViewController *menu = [[MenuViewController alloc] init];
[[[UIApplication sharedApplication] sideViewController] pushViewController:menu onDirection:PPRevealSideDirectionLeft animated:YES];
}
#pragma mark -
#pragma mark init methods
-(void)buildLayout
{
self.view.backgroundColor = [UIColor whiteColor];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 30, 300, 30);
[btn setTitle:@"显示侧边栏" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(10, 70, 300, 30)];
lab.text = @"在屏幕上右划也可打开侧边栏";
lab.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:lab];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self buildLayout];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
#import "BaseViewController.h"
@interface HUDViewController : BaseViewController
@end
//
// HUDViewController.m
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import "HUDViewController.h"
#import "SVProgressHUD.h"
@interface HUDViewController ()
@end
@implementation HUDViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
-(void)btnClicked:(UIButton *)btn
{
switch (btn.tag) {
case 10:
[SVProgressHUD show];
break;
case 20:
[SVProgressHUD showWithStatus:@"操作信息"];
break;
case 30:
[SVProgressHUD showWithStatus:@"加了蒙板就可以重新启动项目了,这种操作需要使用代理方法关闭,刷新,下载什么的操作需要锁定用户界面操作时经常用" maskType:SVProgressHUDMaskTypeBlack];
break;
case 40:
[SVProgressHUD showWithMaskType:SVProgressHUDMaskTypeGradient];
break;
case 50:
[SVProgressHUD dismiss];
break;
case 60:
[SVProgressHUD dismissWithSuccess:@"操作成功"];
break;
case 70:
[SVProgressHUD dismissWithSuccess:@"操作成功,延迟3秒关闭" afterDelay:3];
break;
default:
[SVProgressHUD dismissWithError:@"操作失败"];
break;
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 30, 300, 30);
[btn setTitle:@"显示HUD" forState:UIControlStateNormal];
btn.tag = 10;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 70, 300, 30);
[btn setTitle:@"显示HUD带信息" forState:UIControlStateNormal];
btn.tag = 20;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 110, 300, 30);
[btn setTitle:@"显示HUD带信息蒙板" forState:UIControlStateNormal];
btn.tag = 30;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 150, 300, 30);
[btn setTitle:@"显示HUD蒙板" forState:UIControlStateNormal];
btn.tag = 40;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 300, 300, 30);
[btn setTitle:@"关闭HUD" forState:UIControlStateNormal];
btn.tag = 50;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 340, 300, 30);
[btn setTitle:@"关闭HUD带信息" forState:UIControlStateNormal];
btn.tag = 60;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 380, 300, 30);
[btn setTitle:@"关闭HUD带信息,延迟" forState:UIControlStateNormal];
btn.tag = 70;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 420, 300, 30);
[btn setTitle:@"关闭HUD带失败信息" forState:UIControlStateNormal];
btn.tag = 80;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
// ActivityBarViewController.h
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import "BaseViewController.h"
@interface ActivityBarViewController : BaseViewController
@end
//
// ActivityBarViewController.m
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import "ActivityBarViewController.h"
#import "ZAActivityBar.h"
@interface ActivityBarViewController ()
@end
@implementation ActivityBarViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
#define ZBAR_ACTION_1 @"action1"
#define ZBAR_ACTION_2 @"action2"
-(void)btnClicked:(UIButton *)btn
{
switch (btn.tag) {
case 10:
//第一个是参数,第二个是key,zbar本身支持多线程,可以同时存在多个消息,action用来标记某一个消息,作用相当于tag
[ZAActivityBar showWithStatus:ZBAR_ACTION_1 forAction:ZBAR_ACTION_1];
break;
case 20:
[ZAActivityBar showWithStatus:ZBAR_ACTION_2 forAction:ZBAR_ACTION_2];
break;
case 30:
[ZAActivityBar showSuccessWithStatus:ZBAR_ACTION_1@" success" forAction:ZBAR_ACTION_1];
break;
case 40:
[ZAActivityBar showErrorWithStatus:ZBAR_ACTION_1@" fail" forAction:ZBAR_ACTION_1];
break;
case 50:
[ZAActivityBar showSuccessWithStatus:ZBAR_ACTION_2@" success" forAction:ZBAR_ACTION_2];
break;
case 60:
[ZAActivityBar showErrorWithStatus:ZBAR_ACTION_2@" fail" forAction:ZBAR_ACTION_2];
break;
case 70:
[ZAActivityBar dismissForAction:ZBAR_ACTION_1];
break;
default:
[ZAActivityBar dismiss];
break;
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 30, 300, 30);
[btn setTitle:@"显示Zbar1" forState:UIControlStateNormal];
btn.tag = 10;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 70, 300, 30);
[btn setTitle:@"显示Zbar2" forState:UIControlStateNormal];
btn.tag = 20;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 110, 300, 30);
[btn setTitle:@"Zbar1成功" forState:UIControlStateNormal];
btn.tag = 30;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 150, 300, 30);
[btn setTitle:@"Zbar1失败" forState:UIControlStateNormal];
btn.tag = 40;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 190, 300, 30);
[btn setTitle:@"Zbar2成功" forState:UIControlStateNormal];
btn.tag = 50;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 230, 300, 30);
[btn setTitle:@"Zbar2失败" forState:UIControlStateNormal];
btn.tag = 60;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 270, 300, 30);
[btn setTitle:@"取消Zbar1" forState:UIControlStateNormal];
btn.tag = 70;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 310, 300, 30);
[btn setTitle:@"全部取消" forState:UIControlStateNormal];
btn.tag = 80;
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
// AudioViewController.h
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import "BaseViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface AudioViewController : BaseViewController<AVAudioPlayerDelegate>
@end
//
// AudioViewController.m
// sideTableView
//
// Created by Dong on 13-9-26.
// Copyright (c) 2013年 dong. All rights reserved.
//
#import "AudioViewController.h"
@interface AudioViewController ()
@property (nonatomic,retain) AVAudioPlayer *player;
@property (nonatomic,retain) NSTimer *timer;
@property (nonatomic,retain) UILabel *timeLab;
@property (nonatomic,retain) UISlider *slider;
@property (nonatomic,assign) BOOL isPlaying;
@end
@implementation AudioViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
-(void)btnClicked:(UIButton *)sender
{
if (self.isPlaying) {
[self.timer invalidate];
[sender setTitle:@"播放" forState:UIControlStateNormal];
[self.player pause];
self.isPlaying = NO;
self.slider.enabled = NO;
}
else
{
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(playCount:) userInfo:nil repeats:YES];
[sender setTitle:@"暂停" forState:UIControlStateNormal];
[self.player play];
self.isPlaying = YES;
self.slider.enabled = YES;
}
}
-(void)playCount:(NSTimer *)timer
{
NSUInteger currentTime = self.player.currentTime;
NSUInteger totalTime = self.player.duration;
self.slider.value = currentTime / (CGFloat)totalTime;
// 1min = 60sec
// totalTime单位是秒
// 60*60 = 3600
// NSUInteger h = totalTime/3600;
NSUInteger m = totalTime%(60*60)/60;
NSUInteger s = totalTime%(60*60)%60%60;
NSUInteger cm = currentTime%(60*60)/60;
NSUInteger cs = currentTime%(60*60)%60%60;
self.timeLab.text = [NSString stringWithFormat:@"%lu:%lu/%lu:%lu",cm,cs,m,s];
}
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"播放完成");
self.isPlaying = NO;
self.slider.value = 0;
self.slider.enabled = NO;
UIButton *btn = (UIButton *)[self.view viewWithTag:10];
[btn setTitle:@"播放" forState:UIControlStateNormal];
[self.timer invalidate];
}
-(void)initAudioPlayer
{
NSString *music = [[NSBundle mainBundle] pathForResource:@"HelpMe" ofType:@"mp3"];
NSURL *url = [NSURL fileURLWithPath:music];
NSError *error;
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
if (error) {
NSLog(@"播放器加载失败:%@",[error localizedDescription]);
return;
}
[self.player prepareToPlay];
//所有的代理方法都是可选的
self.player.delegate = self;
}
-(void)changeCurrentTime:(UISlider *)sender
{
NSUInteger total = self.player.duration;
self.player.currentTime = total * sender.value;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self initAudioPlayer];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10, 30, 300, 30);
btn.tag = 10;
[btn setTitle:@"播放" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
self.slider = [[UISlider alloc] initWithFrame:CGRectMake(10, 70, 300, 0)];
[self.slider addTarget:self action:@selector(changeCurrentTime:) forControlEvents:UIControlEventValueChanged];
self.slider.enabled = NO;
[self.view addSubview:self.slider];
self.timeLab = [[UILabel alloc] initWithFrame:CGRectMake(10, 110, 300, 30)];
self.timeLab.backgroundColor = [UIColor clearColor];
self.timeLab.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:self.timeLab];
[self playCount:nil];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
标签:
原文地址:http://www.cnblogs.com/A--G/p/4543872.html