iOS開發(fā)拓展篇—音頻處理(音樂播放器2)

說明:該文主要介紹音樂播放界面的搭建义屏。

一邪蛔、跳轉(zhuǎn)

1.跳轉(zhuǎn)到音樂播放界面的方法選擇
  (1)使用模態(tài)跳轉(zhuǎn)(又分為手動的和自動的)
 〗√帷(2)使用xib并設置跳轉(zhuǎn)
2.兩種方法的分析
  可以使用模態(tài)的方法琳猫,添加一個控制器,讓這個控制器和音樂播放控制器類進行關(guān)聯(lián)私痹,脫線脐嫂,設置標識符且在cell的點擊事件中執(zhí)行segue即可统刮。
  步驟說明:
  (1)在storyboard中新拖入一個控制器账千,然后設置和playing控制器類相關(guān)聯(lián)侥蒙。
    
  (2)設置手動跳轉(zhuǎn)
      
 ≡茸唷(3)設置segue的標識符
    
 ”揆谩(3)跳轉(zhuǎn)代碼處理
    
  不推薦使用模態(tài)的原因如下:
    當選中一首音樂跳轉(zhuǎn)到播放界面進行播放后,如果要跳回到音樂列表界面娃善,那么最常見的做法是在音樂播放控制器上添加一個按鈕论衍。
    當點擊的時候,銷毀這個控制器(dismissed)聚磺。但是坯台,控制器銷毀了那么正在播放的音樂也就隨之不在了。
    且由于播放界面控制器的布局是固定的瘫寝,因此這里選擇的方法是使用xib進行創(chuàng)建蜒蕾。
3.選擇的方法
  新建一個xib,對應于音樂播放控制器焕阿。
  xib的結(jié)構(gòu)如下圖所示:
    
 細節(jié):控制器只需要創(chuàng)建一次咪啡,因此建議使用懶加載,當然也可是把播放器設置為單例
  
復制代碼
1 //
2 // YYMusicsViewController.m
3 //
4
5 #import "YYMusicsViewController.h"
6 #import "YYMusicModel.h"
7 #import "MJExtension.h"
8 #import "YYMusicCell.h"
9 #import "YYPlayingViewController.h"
10
11 @interface YYMusicsViewController ()
12 @property(nonatomic,strong)NSArray *musics;
13 @property(nonatomic,strong)YYPlayingViewController *playingViewController;
14 @end
15
16 @implementation YYMusicsViewController
17 #pragma mark-懶加載
18 -(NSArray *)musics
19 {
20 if (_musics==nil) {
21 _musics=[YYMusicModel objectArrayWithFilename:@"Musics.plist"];
22 }
23 return _musics;
24 }
25 -(YYPlayingViewController *)playingViewController
26 {
27 if (_playingViewController==nil) {
28 _playingViewController=[[YYPlayingViewController alloc]init];
29 }
30 return _playingViewController;
31 }
復制代碼
4.xib的內(nèi)部細節(jié):
(1)已經(jīng)實現(xiàn)了約束捣鲸,用于適配ios6和ios7瑟匆。
(2)設置音樂名稱和歌手的View設置為半透明的,設置方法如下:
  
  設置為30%
  
  注意:不要再storyboard中控件的屬性面板上設置透明度(這樣的話栽惶,這個控件中的子控件也是同樣的透明度)愁溜。
    不推薦的做法:
     
(3)按鈕點擊發(fā)光
  
(4)設置view隱藏能夠節(jié)省一些性能。(參考代碼)
(5)在切換控制器的過程中外厂,設置窗口不能點擊(這樣做是為了防止用戶多次連續(xù)的點擊歌曲名會出現(xiàn)的問題)冕象。

5.補充:
  項目代碼中拖入了UIView的分類,以方便計算frame

二汁蝶、涉及到的代碼
在播放控制器的.h文件中提供一個公共對象方法接口
YYPlayingViewController.h文件
復制代碼
1 // YYPlayingViewController.h
2
3 #import <UIKit/UIKit.h>
4
5 @interface YYPlayingViewController : UIViewController
6 //顯示控制器
7 -(void)show;
8 @end
復制代碼
YYPlayingViewController.m文件

復制代碼
1 //
2 // YYPlayingViewController.m
3 //
4
5 #import "YYPlayingViewController.h"
6
7 @interface YYPlayingViewController ()
8 - (IBAction)exit;
9
10 @end
11
12 @implementation YYPlayingViewController
13 #pragma mark-公共方法
14 -(void)show
15 {
16 //1.禁用整個app的點擊事件
17 UIWindow *window=[UIApplication sharedApplication].keyWindow;
18 window.userInteractionEnabled=NO;
19
20 //2.添加播放界面
21 //設置View的大小為覆蓋整個窗口
22 self.view.frame=window.bounds;
23 //設置view顯示
24 self.view.hidden=NO;
25 //把View添加到窗口上
26 [window addSubview:self.view];
27
28 //3.使用動畫讓View顯示
29 self.view.y=self.view.height;
30 [UIView animateWithDuration:0.25 animations:^{
31 self.view.y=0;
32 } completion:^(BOOL finished) {
33 window.userInteractionEnabled=YES;
34 }];
35 }
36 #pragma mark-內(nèi)部的按鈕監(jiān)聽方法
37 //返回按鈕
38 - (IBAction)exit {
39 //1.禁用整個app的點擊事件
40 UIWindow *window=[UIApplication sharedApplication].keyWindow;
41 window.userInteractionEnabled=NO;
42
43 //2.動畫隱藏View
44 [UIView animateWithDuration:0.25 animations:^{
45 self.view.y=window.height;
46 } completion:^(BOOL finished) {
47 window.userInteractionEnabled=YES;
48 //設置view隱藏能夠節(jié)省一些性能
49 self.view.hidden=YES;
50 }];
51 }
52 @end
復制代碼
cell的點擊事件中的處理代碼:

復制代碼
1 /**
2 * cell的點擊事件
3 */
4 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
5 {
6 //取消選中被點擊的這行
7 [tableView deselectRowAtIndexPath:indexPath animated:YES];
8
9 //調(diào)用公共方法
10 [self.playingViewController show];
11
12 // //執(zhí)行segue跳轉(zhuǎn)
13 // [self performSegueWithIdentifier:@"music2playing" sender:nil];
14 }
復制代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渐扮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子掖棉,更是在濱河造成了極大的恐慌墓律,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幔亥,死亡現(xiàn)場離奇詭異耻讽,居然都是意外死亡,警方通過查閱死者的電腦和手機帕棉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門针肥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饼记,“玉大人,你說我怎么就攤上這事慰枕【咴颍” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵具帮,是天一觀的道長博肋。 經(jīng)常有香客問我,道長匕坯,這世上最難降的妖魔是什么束昵? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任拔稳,我火速辦了婚禮葛峻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巴比。我一直安慰自己术奖,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布轻绞。 她就那樣靜靜地躺著采记,像睡著了一般。 火紅的嫁衣襯著肌膚如雪政勃。 梳的紋絲不亂的頭發(fā)上唧龄,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音奸远,去河邊找鬼既棺。 笑死,一個胖子當著我的面吹牛懒叛,可吹牛的內(nèi)容都是我干的丸冕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼薛窥,長吁一口氣:“原來是場噩夢啊……” “哼胖烛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起诅迷,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤佩番,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后罢杉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趟畏,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年屑那,在試婚紗的時候發(fā)現(xiàn)自己被綠了拱镐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艘款。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沃琅,靈堂內(nèi)的尸體忽然破棺而出哗咆,到底是詐尸還是另有隱情,我是刑警寧澤益眉,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布晌柬,位于F島的核電站,受9級特大地震影響郭脂,放射性物質(zhì)發(fā)生泄漏年碘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一展鸡、第九天 我趴在偏房一處隱蔽的房頂上張望屿衅。 院中可真熱鬧,春花似錦莹弊、人聲如沸涤久。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽响迂。三九已至,卻和暖如春细疚,著一層夾襖步出監(jiān)牢的瞬間蔗彤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工疯兼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留然遏,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓镇防,卻偏偏與公主長得像啦鸣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子来氧,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容