iOS歌詞處理

2021-09-12 01:47:27 字數 1905 閱讀 7098

看了之前外包的**(看頂上的注釋是外包)完全是屎山…然後想了想自己實現了乙份.

2.解析本地歌詞

nsstring *lyc = [nsstring stringwithcontentsoffile:filelyricurl encoding:nsutf8stringencoding error:nil];
通過檔案路徑來拿到lyc(歌詞內容).這裡我截個圖看下歌詞內容吧.

然後我們將歌詞按\n分割為陣列的形式

nsarray *lycarray = [lyc componentsseparatedbystring:@"\n"];
然後使用enumerateobjectsusingblock便利出陣列的每一行.obj即為nsstring型別的內容

[lycarray enumerateobjectsusingblock:^(id obj, nsuinteger idx, bool *stop) ];
3.歌詞時間戳的處理

@"\\[\\d\\:\\d\\.\\d\\]"這個是完整的分秒毫秒的正則(分鐘可能超過兩位數,1-xx可以自己規定)

@"\\[\\d\\:\\d\\]"這個是不包括毫秒的正則

1.建立正則,使用nsregularexpression類

nsregularexpression *regularexpressionfull = [nsregularexpression regularexpressionwithpattern:@"正規表示式1" options:nsregularexpressioncaseinsensitive error:nil];

nsregularexpression *regularexpressionbreviary = [nsregularexpression regularexpressionwithpattern:@"正規表示式2" options:nsregularexpressioncaseinsensitive error:nil];

2.判斷上面兩種時間戳是否存在

if ([regularexpressionfull numberofmatchesinstring:obj options:0 range:nsmakerange(0, ((nsstring *)obj).length)] || [regularexpressionbreviary numberofmatchesinstring:obj options:0 range:nsmakerange(0, ((nsstring *)obj).length)]) else

3. 在正規表示式內處理事件

nsrange minrange = [obj rangeofstring:@"\\[\\d\\:" options:nsregularexpressionsearch range:nsmakerange(0, ((nsstring *)obj).length)];

...這裡省略...

不過要注意的是,在使用這個range的時候一定得判斷一下:

minrange.location != nsnotfound(如果等於,那麼就是不存在)

而且需要記錄一下最後乙個的下標.

然後擷取剩餘的部分.就得到歌詞了.

3.歌詞滾動的處理
[self.tableview scrolltorow:scrollrow insection:0 atscrollposition:uitableviewscrollpositionmiddle animated:yes];
有些人喜歡使用cell的highlit方法.有些人喜歡新新增屬性.這都無傷大雅,記得要滾動到uitableview的中部位置就行uitableviewscrollpositionmiddle

iOS歌詞逐漸變色動畫

實現歌詞逐漸變色的動畫,像卡拉ok一樣可以根據時間進度來染色。效果如圖 因專案需求要實現乙個類似歌詞逐漸變色的效果,自己想來想去想不出來實現方案,還是得求助萬能的google,最終是找到了這篇部落格 比較完美的解決了這個問題。這篇部落格已經將實現方案及其原理講的很清楚了,只是沒有具體的demo,所以...

iOS歌詞逐漸變色動畫

實現歌詞逐漸變色的動畫,像卡拉ok一樣可以根據時間進度來染色。效果如圖 因專案需求要實現乙個類似歌詞逐漸變色的效果,自己想來想去想不出來實現方案,還是得求助萬能的google,最終是找到了這篇部落格比較完美的解決了這個問題。這篇部落格已經將實現方案及其原理講的很清楚了,只是沒有具體的demo,所以我...

rhythmbox歌詞外掛程式之魯班歌詞

rhythmbox歌詞外掛程式之魯班歌詞 今天介紹另一款歌詞外掛程式sogou lyrics魯班歌詞 rblyrics 它是一款rhythmbox上的外掛程式,官方提供deb包,所以適合執行在ubuntu上。魯班歌詞的特性包括 auto scroll window,press left button...