iOS仿網(wǎng)易云音樂
iOS-VLCKit實現(xiàn)仿網(wǎng)易云音樂播放音樂(一)
iOS-VLCKit實現(xiàn)仿網(wǎng)易云音樂播放音樂(二)
iOS-VLCKit實現(xiàn)仿網(wǎng)易云音樂播放音樂(三)
前言
自從加入轉(zhuǎn)盤后摧冀,在不斷的使用過程中硼讽,發(fā)現(xiàn)切換歌曲時效果不太好毕匀,于是觀察了網(wǎng)易云音樂的效果侨嘀,仿寫了一下领斥,可能不如網(wǎng)易云那么流暢擦秽,但整體來說還是實現(xiàn)了怀骤。
實現(xiàn)
觀察網(wǎng)易云后發(fā)現(xiàn)啥辨,在轉(zhuǎn)盤界面可以通過左右滑動來切換上一曲谓松、下一曲星压,點擊下面的上一曲、下一曲按鈕也會有滑動切換效果鬼譬。
實現(xiàn)思路:在轉(zhuǎn)盤界面加入UIScrollView娜膘,然后添加三個轉(zhuǎn)盤視圖,并顯示中間的視圖优质,每次切換后重新再次顯示中間的視圖劲绪。下面是主要的代碼:
1、創(chuàng)建UIScrollView,并添加轉(zhuǎn)盤視圖
[self.diskScrollView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
self.isAnimation = YES;
[self.diskScrollView addSubview:self.leftDiskView];
[self.diskScrollView addSubview:self.centerDiskView];
[self.diskScrollView addSubview:self.rightDiskView];
self.diskScrollView.contentSize = CGSizeMake(KScreenW * 3, 0);
[self setScrollViewContentOffsetCenter];
2盆赤、滑動結(jié)束后贾富,重新設(shè)置索引
// 獲取結(jié)束時,獲取索引
CGFloat scrollW = CGRectGetWidth(scrollView.frame);
CGFloat offsetX = scrollView.contentOffset.x;
if (offsetX == 2 * scrollW) {
self.currentIndex = (self.currentIndex + 1) % self.musics.count;
}else if (offsetX == 0) {
self.currentIndex = (self.currentIndex - 1 + self.musics.count) % self.musics.count;
}else {
[self setScrollViewContentOffsetCenter];
}
另外還發(fā)現(xiàn)個坑點:邊緣滑動返回與UIScrollView滑動的手勢沖突牺六,解決辦法如下:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
if ([gestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]]) {
return NO;
}
return YES;
}
下面看看效果圖吧:
文章可能寫的不是太清楚颤枪,具體還是看代碼吧,github地址:GKAudioPlayerDemo
如果您感興趣的話淑际,不妨點個star哦畏纲!