前言:最近笔者在做视频播放器,所以,写的东西,都和这个有些关系,希望对大家有所帮助。废话不多说,进入主题。
1.首先播放页面需要写个属性接收本地的FileName,然后传递链接的时候做判断,这样第一步就完成了
NSURL *playURL;
if (self.playName != nil) {
playURL = [NSURL fileURLWithPath:self.playName];
}else{
playURL = [NSURL URLWithString:self.dailySelected.playUrl];
}
2.关于传递的FileName,是一个放在数据库的全部不变量,所以我们必须为此建一个表,并且新建一个Model。如果不是不变量,会存在退出后,在点相同页面时,传值丢失问题
//下载按钮
[self.playView.downloadButton addTarget:self action:@selector(downloadMovie) forControlEvents:(UIControlEventTouchUpInside)];
- (void)downloadMovie
{
self.downloadPercent = [[ProgressView alloc] initWithURL:[NSURL URLWithString:self.dailySelected.playUrl] progressViewWithFrame:(CGRectMake(self.playView.downloadButton.frame.origin.x + 30, self.playView.downloadButton.frame.origin.y + self.navigationController.navigationBar.frame.size.height + 20 + 10, 60, 20)) font:[UIFont fontWithName:@"Georgia-BoldItalic" size:12.0] color:[UIColor whiteColor] timeout:5.0 alive:YES radius:0 delegate:self];
[self.view addSubview:self.downloadPercent];
self.playView.downloadButton.userInteractionEnabled = NO;
}
- (void)progressView:(ProgressView *)progressView didFinishedWithData:(NSData *)data suggestedWithFileName:(NSString *)fileName
{
[UIView animateWithDuration:0.5 animations:^{
self.downloadPercent.alpha = 0;
}];
[self.downloadPercent performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.5];
self.playView.downloadButton.tintColor = [UIColor redColor];
self.playView.downloadButton.userInteractionEnabled = NO;
[[OpenEyeDataBase shareSqliteManager]insertDownloadWithModel:self.dailySelected];
[[NSNotificationCenter defaultCenter]postNotificationName:@"downloadComplete" object:nil];
self.fileName = fileName;
//将路径插入数据库
[[OpenEyeDataBase shareSqliteManager] insertDownloadWithModel:self.dailySelected fileName:fileName];
//NSLog(@"%@",self.fileName);
}
注:上面代码有个小封装,在我另一个文章中有源码
3.最后就是在进入页面时,有个判断,通过遍历数据库来判断
- (void)viewWillAppear:(BOOL)animated
{
for (DailySelected *dailySelected in [[OpenEyeDataBase shareSqliteManager] selectDownloadAllModel]) {
NSString *string = [NSString stringWithFormat:@"%@",self.dailySelected.ID];
if (string == dailySelected.ID) {
self.playView.downloadButton.tintColor = [UIColor redColor];
self.playView.downloadButton.userInteractionEnabled = NO;
for (FileModel *fileModel in [[OpenEyeDataBase shareSqliteManager] selectDownloadFileNameAllModel]) {
if (string == fileModel.ID) {
self.fileName = fileModel.fileName;
}
}
}
}
}
这些操作后,就能实现了,如果不明白可以留言,小弟一定详细及及时解释