-
<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个,每一个分别和最后一个都创建一个模型!