IOS开发-UI学习-根据URL显示图片,下载图片的练习(button,textfield,image view,url,data)
编写一个如下界面,实现:
1、在文本输入框中输入一个网址,然后点击显示图片,图片显示到UIImageView中。
2、点击下载,这张显示的图片被下载到手机的Documents文件夹下的Dowmload目录下,并按序号命名。
3、在文本框输入完成之后点击其他地方,键盘自动消失。
准备工作:
1、输入的URL有可能是http而非https,需要在Info.plist中添加如下代码:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
添加之后,Info.plist如下:

接下来是代码,代码全部写在UIViewController的.m文件中:
#import "ViewController.h"
@interface ViewController (){
// 定于全局变量
UIButton *btnDownLoad;
UIButton *btndisplay;
UIImageView *imageView;
UITextField *textFieldinputUrl;
NSData *imagedata;
NSString *newpath;
int count;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 显示图片按钮初始化及加载
// 初始化为圆角矩形按钮
btndisplay = [UIButton buttonWithType:UIButtonTypeRoundedRect];
// 设置按钮的位置,大小
btndisplay.frame = CGRectMake(, , , );
// 设置按钮背景色
btndisplay.backgroundColor = [UIColor colorWithRed:0.512 green:0.562 blue:0.943 alpha:1.000];
// 设置按钮文本颜色及文本内容
[btndisplay setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btndisplay setTitle:@"显示图片" forState:UIControlStateNormal] ;
// 给按钮添加显示图片事件
[btndisplay addTarget:self action:@selector(display:) forControlEvents:UIControlEventTouchUpInside];
// 把按钮加载到view上
[self.view addSubview:btndisplay];
// 下载图片按钮初始化及加载
btnDownLoad = [[UIButton alloc]initWithFrame:CGRectMake(, , , )];
btnDownLoad.backgroundColor = [UIColor colorWithRed:0.512 green:0.562 blue:0.943 alpha:1.000];
[btnDownLoad setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btnDownLoad setTitle:@"下载图片" forState:UIControlStateNormal] ;
[btnDownLoad addTarget:self action:@selector(download:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btnDownLoad];
// 设置URL输入框
// 初始化文本输入框及背景色设置
textFieldinputUrl = [[UITextField alloc]initWithFrame:CGRectMake(, , , )];
textFieldinputUrl.backgroundColor = [UIColor colorWithRed:0.653 green:1.000 blue:0.919 alpha:1.000];
// 设置文本输入前提示水印
textFieldinputUrl.placeholder = @"请输入图片地址";
// 设置文本输入框中消除按钮
textFieldinputUrl.clearButtonMode = UITextFieldViewModeAlways;
// 把文本输入框加载到View
[self.view addSubview:textFieldinputUrl];
// 设置图片控件
imageView = [[UIImageView alloc]initWithFrame:CGRectMake(, , , )];
imageView.backgroundColor = [UIColor grayColor];
[self.view addSubview:imageView];
// 获取沙盒中document的路径
NSString *dictpath = [NSString stringWithFormat:@"%@/Documents",NSHomeDirectory()];
// 创造一个字符串指向document中的要新建的download文件夹
newpath =[NSString stringWithFormat:@"%@/download",dictpath];
// 在document中新建download文件夹
[[NSFileManager defaultManager]createDirectoryAtPath:newpath withIntermediateDirectories:YES attributes:nil error:nil];
NSLog(@"%@",dictpath);
}
//显示图片
-(void)display:(id)sender{
// 把文本框输入的URL转换成数据
NSURL *imageurl = [NSURL URLWithString:textFieldinputUrl.text];
imagedata = [NSData dataWithContentsOfURL:imageurl];
// 把数据转换成图片
UIImage *image = [UIImage imageWithData:imagedata];
// 转换的图片给UIImageView显示
imageView.image =image;
}
//下载图片
-(void)download:(id)sender{
count++;
// 在路径下新建图片文件
NSString *newfilepath = [NSString stringWithFormat:@"%@/%d.jpg",newpath,count];
// 把图片数据保存在路径下新建好的文件中
[[NSFileManager defaultManager]createFileAtPath:newfilepath contents:imagedata attributes:nil];
}
//输入结束后让键盘滚蛋
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[textFieldinputUrl resignFirstResponder];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
最终输入URL点击显示图片之后显示:

点击下载图片之后,在手机中本软件的路径下:

需要注意的地方有:
1、文本框在输入完后,我们点击文本框之外的其他地方,键盘如何消失:
//输入结束后让键盘滚蛋
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[textFieldinputUrl resignFirstResponder];
}
2、下载图片时如何自动为图片命名:定义一个全局变量用来计算点击下载图片按钮的次数,然后根据次数为图片命名,可保证不重名。然后生成格式化字符串作为下载后图片的名字:
//下载图片
-(void)download:(id)sender{
count++;
// 在路径下新建图片文件
看集 NSString *newfilepath = [NSString stringWithFormat:@"%@/%d.jpg",newpath,count];
// 把图片数据保存在路径下新建好的文件中
[[NSFileManager defaultManager]createFileAtPath:newfilepath contents:imagedata attributes:nil];
}
IOS开发-UI学习-根据URL显示图片,下载图片的练习(button,textfield,image view,url,data)的更多相关文章
- 李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片
李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片 源码: // // ViewController.m // 08-九宫格扩展 // // Created by 李洪强 ...
- iOS开发——UI基础-自定义构造方法,layoutSubviews,Xib文件,利用Xib自定义View
一.自定义构造方法 有时候需要快速创建对象,可以自定义构造方法 + (instancetype)shopView { return [[self alloc] init]; } - (instance ...
- iOS开发UI篇—UIScrollView控件实现图片缩放功能
iOS开发UI篇—UIScrollView控件实现图片缩放功能 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对 ...
- iOS开发UI篇—Quartz2D使用(图片剪切)
iOS开发UI篇—Quartz2D使用(图片剪切) 一.使用Quartz2D完成图片剪切 1.把图片显示在自定义的view中 先把图片绘制到view上.按照原始大小,把图片绘制到一个点上. 代码: - ...
- 【转】 iOS开发UI篇—UIScrollView控件实现图片轮播
原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 ...
- iOS开发UI篇—UIScrollView控件实现图片轮播
iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 二.实现代码 storyboard中布局 代码: #import "YYV ...
- iOS开发UI篇—CAlayer(创建图层)
iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...
- iOS开发UI篇—CALayer简介
iOS开发UI篇—CALayer简介 一.简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实 ...
- iOS开发UI篇—核心动画(UIView封装动画)
iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布 ...
随机推荐
- HDU 5833 (2016大学生网络预选赛) Zhu and 772002(高斯消元求齐次方程的秩)
网络预选赛的题目……比赛的时候没有做上,确实是没啥思路,只知道肯定是整数分解,然后乘起来素数的幂肯定是偶数,然后就不知道该怎么办了… 最后题目要求输出方案数,首先根据题目应该能写出如下齐次方程(从别人 ...
- zencart url特殊字符处理
1. 支持 在后台的seo url 将Outputw3c 改为false 2.删除特殊字符 这对于在少量的zen cart网站上处理少量的特殊字符可能还适用,实际上我们经常在导入产品数据时或者或少会带 ...
- hdu_2222_Keywords Search(AC自动机板子)
题目连接:hdu_2222_Keywords Search 存个自己写的AC自动机 #include<cstdio> #include<cstring> #define F(i ...
- java工程开发之图形化界面之(第二课)
上一节主要是讨论小的应用程序,在这里我们将采用一种全新的方式来重新编写它. 在这里我们注重关注JFrame和JOptionPane.这些类提供了在JAVA应用程序使用图形的方法以及在JAVA程序中对I ...
- 教你用CSS代码写出的各种形状图形
做网页设计时经常要用到各种形状的图形,对于规则的图形很简单,但是对于不规则的图形,一般我们都是用图片,今天就在这里教大家怎样用css代码写出各种规则不同的图形 1.正方形 #square {width ...
- 【转】你必须了解的Session的本质
有一点我们必须承认,大多数web应用程序都离不开session的使用.这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制.我们先简单的了解一些http的知识,从而理解该协议的无 ...
- 使用maven开发过程中,pom报的一些错的解决方法
1. maven-resources-plugin prior to 2.4 is not supported by m2e. Use maven- resources-plugin versio ...
- SQL求解两个时间差
sql 求解两个时间差 SELECTDATEDIFF( Second, '2009-8-25 12:15:12', '2009-9-1 7:18:20') --返回相差秒数 SELECTDATEDIF ...
- sql语句删除由于无主键导致完全重复的数据方法
sql语句删除由于无主键导致完全重复的数据方法 select distinct * into #Tmp from t_column drop table t_column select * into ...
- i2c的时钟延展问题(转)
源:http://blog.csdn.net/zyboy2000/article/details/7636769 结论: (即在模拟i2c主:在主设置SCL为高后,要超时判断SCL是否为高,再发后面的 ...