美文网首页
iOS 音乐播放器歌词解析

iOS 音乐播放器歌词解析

作者: 张三儿 | 来源:发表于2017-04-20 15:50 被阅读471次
  • <h2>目前常接触的歌词格式


  • <h2>未来会接触的歌词格式(我没接触过)


看到这歌词就懵逼,但我觉得这应该有两个属性,一个是time,一个是歌词

  • 首先根据读取歌词
  • 扣除多余部分


  • 根据每句歌词中间的“]”创建模型
//放开一个方法根据歌词名解析
/** 歌词名 */
@property (nonatomic, copy) NSString *lrcName;

#pragma mark - 重写lrcName
- (void)setLrcName:(NSString *)lrcName
{
    // 1.记录歌词名
    _lrcName = lrcName ;
    
    // 2.model解析歌词
    self.lrcList = [ZJLrcTool lrcToolWithLrcName:lrcName];
    
    // 3.刷新表格
    [self.tableView reloadData];
}
#import <Foundation/Foundation.h>

@interface ZJLrcLine : NSObject

@property (nonatomic, copy) NSString *text;
@property (nonatomic, assign) NSTimeInterval time;

- (instancetype)initWithLrcLineString:(NSString *)lrcLineString;
+ (instancetype)LrcLineString:(NSString *)lrcLineString;

@end
#import "ZJLrcLine.h"

@implementation XMGLrcLine

- (instancetype)initWithLrcLineString:(NSString *)lrcLineString
{
    if (self = [super init]) {
        // [01:02.38]想你时你在天边
        NSArray *lrcArray = [lrcLineString componentsSeparatedByString:@"]"];
        self.text = lrcArray[1];
        self.time = [self timeWithString:[lrcArray[0] substringFromIndex:1]];
        
    }
    return self;

}

+ (instancetype)LrcLineString:(NSString *)lrcLineString
{
    return [[self alloc] initWithLrcLineString:lrcLineString];
}

- (NSTimeInterval)timeWithString:(NSString *)timeString
{
    // 01:02.38
    NSInteger min = [[timeString componentsSeparatedByString:@":"][0] integerValue];
    NSInteger sec = [[timeString substringWithRange:NSMakeRange(3, 2)] integerValue];
    NSInteger hs = [[timeString componentsSeparatedByString:@"."][1] integerValue];
    return min * 60 + sec + hs * 0.01;
}

@end

<h2>最终效果



<h3>对于这种将来有时间在补全具体代码!无非就是生成数组的时候判断,以“]”划分会生成四部分,判断数组的count如果大于2个,每一个分别和最后一个都创建一个模型!

(需要数组从新排序,根据时间)ß

相关文章

网友评论

      本文标题:iOS 音乐播放器歌词解析

      本文链接:https://www.haomeiwen.com/subject/vhzkzttx.html