制作一个简单的图片浏览器 对应图片的张数,与描述,还有图片的缩放
2016-03-30 00:53
591 查看
#import <UIKit/UIKit.h>
@interface ViewController :
UIViewController
//监听拖拽时间,是一个Value值,最左边是0,最右边是1
//UISlider 是监听传进来的值,
- (IBAction)sliderValueChange:(UISlider *)sender;
//设置按钮的方法
- (IBAction)setting;
//设置图片大小的方法
- (IBAction)imageSizeChange:(UISlider *)sender;
//设置夜间模式方法
- (IBAction)nightMode:(UISwitch *)sender;
//设置序号属性 1/6
@property (weak,
nonatomic) IBOutlet
UILabel *imageNo;
//设置图片属性
@property (weak,
nonatomic) IBOutlet
UIImageView *imageView;
//设置图片文字描述
@property (weak,
nonatomic) IBOutlet
UILabel *imageDesc;
//子view属性,主要是修改Y值
@property (weak,
nonatomic) IBOutlet
UIView *settingView;
@end
#import "ViewController.h"
@interface
ViewController ()
{
//声明这个属性,就是能够让这个文件访问,而不是在某个代码块有效
NSArray *_descs;
}
@end
@implementation ViewController
#pragma mark 控制器的view加载完毕后会调用一次
- (void)viewDidLoad{
//固定写法
[super
viewDidLoad];
//描述是一个数组,而且每次文件读取的数组都是一样的,所以可以把数组设置为属性,供需要调用的人调用
//设置描述,如果用if判断的话,比较麻烦,所以可以用数组,把所有的描述,按照xml格式存进数组里面,也就是需要先创建一个.plist的文件,把所有描述存进这个.plist文件中
//创建一个数组,是把.plist中得文件,创建为数组,然后相应的图片,就调用对应的描述 arrayWithContentsOfFile:(NSString
*) 这个不是单独传一个文件就可以了,而是传一个文件+路径,所以要先把文件路径生成对象
//把图片的路径复制进来,但是这个路径,有两个问题,这个路径不能是本地的路径,而是模拟器上面的路径,还有就是如果直接复制全路径的话,到其他的电脑上就会失效,因为路径不一样,所以要用代码
//如果要访问项目中资源包里面的所有资源就用[NSBundle mainBundle]
//下面这行代码就是访问所有资源
NSBundle *bundle = [NSBundle
mainBundle];
//利用bundle加载文件的全路径
类方法 pathForResource:(NSString *) ofType:(NSString *);
其中,pathForResource:(NSString *)这个是读文件名,ofType:(NSString *)这个是读文件的扩展名。
NSString *path = [bundle
pathForResource:@"Property List"
ofType:@"plist"];
//
加载path对应的文件来创建数组
_descs = [NSArray
arrayWithContentsOfFile:path];
//因为目前的默认描述不是第一张图片的描述,所以需要设置默认描述为第一张图片的描述,又因为描述是包装在数组里面,默认的第一张图片的描述的下标是0
_imageDesc.text =
_descs[0];//
这个有点小问题
}
//实现拖拽的方法,而这个方法使用比较频繁,
- (IBAction)sliderValueChange:(UISlider *)sender {
//下面这行打印出来的就是value的值,默认最小是0,最大是1,可以根据需求修改,这里需要修改为1-6
//NSLog(@"change----%f",sender.value);
//1.第一步把图片读出来,
//获得图片,是把字符串的转为图片用 stringWithFormat
拼接,%.f.jpg
因为是float的值,所以用%f打印,而且要读取的时sender的值,所以调用sender.value
NSString *imageName = [NSString
stringWithFormat:@"%.f.jpg",sender.value];
//设置图片
self.imageView.image = [UIImage
imageNamed:imageName];
//设置序号,而且要读取的时sender的值,所以调用sender.value
self.imageNo.text = [NSString
stringWithFormat:@"%.f/6",sender.value+1];
//NSLog(@"%@",imageName);
//NSLog(@"%@",descs);//这个就是把整个数组打印出来
//
因为sender.value打印出来的值是float,而这只能放整数,所以要强制转换为整数类型
int no = (int)(sender.value +
0.5); // 加0.5的原因让描述和图片能够对应.
_imageDesc.text =
_descs[no];
//NSLog(@"%d--%@",no,_descs[no]);
}
#pragma mark 设置方法的实现
- (IBAction)setting {
//1.设置一个新的frame,取出frame的值,因为frame是结构体,不能直接修改里面的属性值,所以需要设置一个新的frame,间接修改
CGRect tempFrame =
self.settingView.frame;
//2.修改frame中y的值,这里的值是100,因为子view的高是100,但是不能写死,所以需要用代码self.view.frame.size.height或者(_settingView.frame.size.height),settingView是整个子view,frame里面有size
point,size里面有width,height,
而这里的height就是y值,
//如果子view的y值等于height,那么就减掉height,这样就会出来
if (self.settingView.frame.origin.y
== self.view.frame.size.height)//
self.view.frame.size.height是整个view的高,4或者4s
是60
{
tempFrame.origin.y -=
self.settingView.frame.size.height;
//如果只是写这一行代码,只能让y的值一直减,那么就不是设计之处想要的效果,点击第一下出来,在点击一下就隐藏了,所以需要做一个if判断
} else {//这里就是让子view隐藏
tempFrame.origin.y +=
self.settingView.frame.size.height;
}
//3.重新赋值
self.settingView.frame = tempFrame;
//调试,打印出高度和Y值
//NSLog(@"%f",self.view.frame.size.height);
//NSLog(@"%f",self.settingView.frame.origin.y);
}
#pragma mark 设置图片大小(伸缩)的方法实现
- (IBAction)imageSizeChange:(UISlider *)sender {
// CGAffineTransformMakeScale
括号里面第一个只是上下缩放,后面的只是左右缩放
_imageView.transform =
CGAffineTransformMakeScale(sender.value, sender.value);
}
#pragma mark 设置夜间模式的方法实现
- (IBAction)nightMode:(UISwitch *)sender {
if(sender.on ==
YES){
self.view.backgroundColor=[UIColor
grayColor];
}else{
self.view.backgroundColor=[UIColor
whiteColor];
}
}
@end
@interface ViewController :
UIViewController
//监听拖拽时间,是一个Value值,最左边是0,最右边是1
//UISlider 是监听传进来的值,
- (IBAction)sliderValueChange:(UISlider *)sender;
//设置按钮的方法
- (IBAction)setting;
//设置图片大小的方法
- (IBAction)imageSizeChange:(UISlider *)sender;
//设置夜间模式方法
- (IBAction)nightMode:(UISwitch *)sender;
//设置序号属性 1/6
@property (weak,
nonatomic) IBOutlet
UILabel *imageNo;
//设置图片属性
@property (weak,
nonatomic) IBOutlet
UIImageView *imageView;
//设置图片文字描述
@property (weak,
nonatomic) IBOutlet
UILabel *imageDesc;
//子view属性,主要是修改Y值
@property (weak,
nonatomic) IBOutlet
UIView *settingView;
@end
#import "ViewController.h"
@interface
ViewController ()
{
//声明这个属性,就是能够让这个文件访问,而不是在某个代码块有效
NSArray *_descs;
}
@end
@implementation ViewController
#pragma mark 控制器的view加载完毕后会调用一次
- (void)viewDidLoad{
//固定写法
[super
viewDidLoad];
//描述是一个数组,而且每次文件读取的数组都是一样的,所以可以把数组设置为属性,供需要调用的人调用
//设置描述,如果用if判断的话,比较麻烦,所以可以用数组,把所有的描述,按照xml格式存进数组里面,也就是需要先创建一个.plist的文件,把所有描述存进这个.plist文件中
//创建一个数组,是把.plist中得文件,创建为数组,然后相应的图片,就调用对应的描述 arrayWithContentsOfFile:(NSString
*) 这个不是单独传一个文件就可以了,而是传一个文件+路径,所以要先把文件路径生成对象
//把图片的路径复制进来,但是这个路径,有两个问题,这个路径不能是本地的路径,而是模拟器上面的路径,还有就是如果直接复制全路径的话,到其他的电脑上就会失效,因为路径不一样,所以要用代码
//如果要访问项目中资源包里面的所有资源就用[NSBundle mainBundle]
//下面这行代码就是访问所有资源
NSBundle *bundle = [NSBundle
mainBundle];
//利用bundle加载文件的全路径
类方法 pathForResource:(NSString *) ofType:(NSString *);
其中,pathForResource:(NSString *)这个是读文件名,ofType:(NSString *)这个是读文件的扩展名。
NSString *path = [bundle
pathForResource:@"Property List"
ofType:@"plist"];
//
加载path对应的文件来创建数组
_descs = [NSArray
arrayWithContentsOfFile:path];
//因为目前的默认描述不是第一张图片的描述,所以需要设置默认描述为第一张图片的描述,又因为描述是包装在数组里面,默认的第一张图片的描述的下标是0
_imageDesc.text =
_descs[0];//
这个有点小问题
}
//实现拖拽的方法,而这个方法使用比较频繁,
- (IBAction)sliderValueChange:(UISlider *)sender {
//下面这行打印出来的就是value的值,默认最小是0,最大是1,可以根据需求修改,这里需要修改为1-6
//NSLog(@"change----%f",sender.value);
//1.第一步把图片读出来,
//获得图片,是把字符串的转为图片用 stringWithFormat
拼接,%.f.jpg
因为是float的值,所以用%f打印,而且要读取的时sender的值,所以调用sender.value
NSString *imageName = [NSString
stringWithFormat:@"%.f.jpg",sender.value];
//设置图片
self.imageView.image = [UIImage
imageNamed:imageName];
//设置序号,而且要读取的时sender的值,所以调用sender.value
self.imageNo.text = [NSString
stringWithFormat:@"%.f/6",sender.value+1];
//NSLog(@"%@",imageName);
//NSLog(@"%@",descs);//这个就是把整个数组打印出来
//
因为sender.value打印出来的值是float,而这只能放整数,所以要强制转换为整数类型
int no = (int)(sender.value +
0.5); // 加0.5的原因让描述和图片能够对应.
_imageDesc.text =
_descs[no];
//NSLog(@"%d--%@",no,_descs[no]);
}
#pragma mark 设置方法的实现
- (IBAction)setting {
//1.设置一个新的frame,取出frame的值,因为frame是结构体,不能直接修改里面的属性值,所以需要设置一个新的frame,间接修改
CGRect tempFrame =
self.settingView.frame;
//2.修改frame中y的值,这里的值是100,因为子view的高是100,但是不能写死,所以需要用代码self.view.frame.size.height或者(_settingView.frame.size.height),settingView是整个子view,frame里面有size
point,size里面有width,height,
而这里的height就是y值,
//如果子view的y值等于height,那么就减掉height,这样就会出来
if (self.settingView.frame.origin.y
== self.view.frame.size.height)//
self.view.frame.size.height是整个view的高,4或者4s
是60
{
tempFrame.origin.y -=
self.settingView.frame.size.height;
//如果只是写这一行代码,只能让y的值一直减,那么就不是设计之处想要的效果,点击第一下出来,在点击一下就隐藏了,所以需要做一个if判断
} else {//这里就是让子view隐藏
tempFrame.origin.y +=
self.settingView.frame.size.height;
}
//3.重新赋值
self.settingView.frame = tempFrame;
//调试,打印出高度和Y值
//NSLog(@"%f",self.view.frame.size.height);
//NSLog(@"%f",self.settingView.frame.origin.y);
}
#pragma mark 设置图片大小(伸缩)的方法实现
- (IBAction)imageSizeChange:(UISlider *)sender {
// CGAffineTransformMakeScale
括号里面第一个只是上下缩放,后面的只是左右缩放
_imageView.transform =
CGAffineTransformMakeScale(sender.value, sender.value);
}
#pragma mark 设置夜间模式的方法实现
- (IBAction)nightMode:(UISwitch *)sender {
if(sender.on ==
YES){
self.view.backgroundColor=[UIColor
grayColor];
}else{
self.view.backgroundColor=[UIColor
whiteColor];
}
}
@end
相关文章推荐
- 来自ImageSee官方 JavaScript图片浏览器[原创]
- 使用wxpython实现的一个简单图片浏览器实例
- Android自定义Gallery控件实现3D图片浏览器
- iOS开发中使用UIScrollView实现无限循环的图片浏览器
- 图片浏览器
- 用SurfaceView,Timer以及Handler实现的一个带有音乐和文字的电子相册,可以自动播放~
- 【Android 应用开发】AndroidUI设计 之 图片浏览器
- swift之图片浏览器
- jQuery Mobile图片轮转轮播
- Android仿微信朋友圈图片浏览器(支持图片手势缩放,拖动)
- 【Java小项目】图片浏览器
- iOS小效果(5)图片浏览器
- Android开发之图片浏览器
- Android 图片浏览器代码完善
- Android之ImageSwitcher控件概述
- iOS-SDPhotoBrowser
- MWPhotoBrowser的简单使用
- 自己写的一款基于移动端的图片浏览器插件
- iOS 图片浏览器
- iOS开源照片浏览器框架SGPhotoBrowser的设计与实现