iOS 通过网络请求获取图片的下载歌曲
1.导入代理<NSURLConnectionDataDelegate>
@interface ViewController ()<NSURLConnectionDataDelegate>
{
long long alllength; //下载总长度
long long currlenth; //当期下载长度
}
//存放下载的mp3 数据流
@property(nonatomic,strong)NSMutableData *msicDate;
//下载进度显示
@property(nonatomic,strong)UIProgressView *msicProgress;
//下载按钮
@property(nonatomic,strong)UIButton *but;
//音乐播放
@property(nonatomic,strong)AVAudioPlayer *player;
//添加下载图片地址
NSString *path=@"http://pic1.nipic.com/2008-10-27/200810278105878_2.jpg"; //调用下载图片方法
[self addTheimg:path]; //进度条设置
self.msicProgress =[[UIProgressView alloc]initWithFrame:CGRectMake(, , , )];
self.msicProgress.progress=;
//设置下载进度颜色
self.msicProgress.progressTintColor=[UIColor colorWithRed:0.007 green:0.868 blue:0.000 alpha:1.000];
//进度条背景颜色
self.msicProgress.trackTintColor=[UIColor grayColor]; //下载按钮点击下载
self.but=[UIButton buttonWithType:UIButtonTypeCustom];
_but.frame=CGRectMake(, , , );
[_but setTitleColor:[UIColor whiteColor]forState:UIControlStateNormal];
[_but setTitle:@"下载" forState:UIControlStateNormal];
_but.backgroundColor=[UIColor orangeColor];
[_but addTarget:self action:@selector(plarmusic:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:_msicProgress];
[self.view addSubview:_but];
方法的实现
//按钮点击时间相应方法
-(void)plarmusic:(UIButton *)sender
{
//歌曲下载总的长度
alllength=;
//当前获取的量
currlenth = ;
self.msicDate =[[NSMutableData alloc]init];
//设置歌曲下载的地址
NSString *path=@"http://yinyueshiting.baidu.com/data2/music/124345627/124104509190800128.mp3?xcode=cb12e87f8333e5370d9b8f0c677c76d2";
NSURL *url=[NSURL URLWithString:path];
//方式1 网络请求
NSURLRequest *requst=[NSURLRequest requestWithURL:url];
//方式2
//NSURLRequest *resq=[[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]; //使用代理进行请求 创建连接服务器
[NSURLConnection connectionWithRequest:requst delegate:self];
}
//实现网络请求代理方法
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
//获取要下载的MP3 的长度,收到响应即可得知,不用下载完毕
//此代理方法只执行一次,获取总的数据量
alllength =[response expectedContentLength];
} //获取每次下载的数据量,此方法可执行多次
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
//将每次下载的数据放入总得数据区域内
[self.msicDate appendData:data];
//将本次获取的数据长度追加到当期长度上
currlenth +=data.length;
//更新进度条
self.msicProgress.progress=(float)currlenth/alllength;
} //下载结束调用,播放音乐
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSError *error=nil;
//下载完成后,初始化player 然后进行歌曲播放
self.player = [[AVAudioPlayer alloc]initWithData:self.msicDate error:&error];
[self.player play];
} //请求错误调用
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
if (error) {
NSLog(@"error == %@",error);
}
}
//调用图片的方法
-(void)addTheimg:(NSString *)path
{
// 1.通过字符串创建一个url
NSString *imgstr=path;
NSURL *imgurl=[NSURL URLWithString:imgstr]; //2. 创建网络请求
NSURLRequest *requst=[NSURLRequest requestWithURL:imgurl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]; NSError *error=nil;
//3. 链接服务器
NSData *imgDate = [NSURLConnection sendSynchronousRequest:requst returningResponse:nil error:&error];
if (error)
{
//如果错误,打印错误
NSLog(@"%@",error);
}else
{
//如果找到图片,创建一个图片视图接收图片
UIImageView *img=[[UIImageView alloc]initWithFrame:CGRectMake(, , , )];
img.image=[UIImage imageWithData:imgDate];
//将图片显示在视图
[self.view addSubview:img];
} }
iOS 通过网络请求获取图片的下载歌曲的更多相关文章
- ios 从网络上获取图片并在UIImageView中显示
ios 从网络上获取图片 -(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIIm ...
- ios 从网络上获取图片
-(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIImage * result; N ...
- 【iOS开发-从网络上获取图片尺寸】
实际开发过程中,容易碰到从网络上获取图片尺寸的场景,比如一个UIImageView要装载从网络上获取的图片,但要先设置其frame,此时又不知道图片尺寸,就要从网络上获取尺寸了.为了最好的用户体验,一 ...
- ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)
当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你 ...
- AFNetworking网络请求与图片上传工具(POST)
AFNetworking网络请求与图片上传工具(POST) .h文件 #import <Foundation/Foundation.h> /** 成功Block */ typedef vo ...
- ios中摄像头/相册获取图片压缩图片上传服务器方法总结
本文章介绍了关于ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结,有需要了解的同学可以参考一下下. 这几天在搞iphone上面一个应用的开发,里面有需要摄像头/相册编程和图片上传的问 ...
- Android 多线程:使用Thread和Handler (从网络上获取图片)
当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分 ...
- css3如何让div一直循环自转圈,附带:网络请求通知图片一直在转圈实例
css3如何让div一直循环自转圈 代码如下: div{ -webkit-transition-property: -webkit-transform; -webkit-transition-dura ...
- iOS开发网络请求——大文件的多线程断点下载
iOS开发中网络请求技术已经是移动app必备技术,而网络中文件传输就是其中重点了.网络文件传输对移动客户端而言主要分为文件的上传和下载.作为开发者从技术角度会将文件分为小文件和大文件.小文件因为文件大 ...
随机推荐
- 20155330 2016-2017-2 《Java程序设计》第四周学习总结
20155330 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 学习目标 理解封装.继承.多态的关系 理解抽象类与接口的区别 掌握S.O.L.I.D原则 了 ...
- mouseover,mouseenter,mouseout,mouseleave的区别
mouseover :不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件. mouseout :不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件. mous ...
- 简单的Slony-I设置实例 II
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL集群方案相关索引页 回到顶级页面:PostgreSQL索引页 接前面例子, 简单的Slony-I设置实例 这次我 ...
- [arc067F]Yakiniku Restaurants[矩阵差分]
Description 传送门 Solution 假如我们确定了烧烤店区间[l,r],则票j必定会选择在B[i][j](l<=i<=r)最大的烧烤店使用. 反过来想,我们想要票j在第i个烧 ...
- ELKStack入门篇(一)之ELK部署和使用
一.ELKStack简介 1.ELK介绍 中文指南:https://www.gitbook.com/book/chenryn/elk-stack-guide-cn/details ELK Stack包 ...
- 字典(dict)的反转
1.今天在写12306查询余票时,想给定字典(dict)的值,从而得到字典(dict)的键,但好像字典(dict)方法中没有与此相关的方法,只能退而求其次,反转字典(dict),将原字典(dict)的 ...
- STM32L431驱动带UC1698芯片调试记录
1, 数据线连接方式,这次使用的是8080格式的接口,如下 2. 主要是信号和数据引脚 DATA0-DATA7 并口的数据 RST 复位信号 WR 写信号 RD 读信号 C/D 数据还是命令 CS片 ...
- 解决老项目中 Timer运行一段时间后失效的问题
那是因为Timer中的代码出现了异常未被捕获,所以线程被挂起 只需要加入 try catch即可 推荐使用 Quartz 2018-08-08 03:50:44 [ Timer-1:39366015 ...
- 我们一起学习WCF 第二篇WCF承载多个接口
前言:现在王大叔养了大批猪,赚了很多钱.但是最近发现养鸡也可以赚很多钱,他就像扩展业务开始养鸡.又过两年他发现市场对狗的需求量很大,他开始养狗.那么他改怎么做呢,不可能去修改猪住的地方把鸭子和狗放里面 ...
- Spring框架 之IOC容器 和AOP详解
主要分析点: 一.Spring开源框架的简介 二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置 一.S ...