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

#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.修改framey的值,这里的值是100,因为子view的高是100,但是不能写死,所以需要用代码self.view.frame.size.height或者(_settingView.frame.size.height)settingView是整个子viewframe里面有size pointsize里面有widthheight 而这里的height就是y值,

    //如果子viewy值等于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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值