您的位置:首页 > 其它

制作一个简单的图片浏览器 对应图片的张数,与描述,还有图片的缩放

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  图片浏览器