說明:該文主要介紹音樂播放界面的搭建义屏。
一邪蛔、跳轉(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 }
復制代碼