IOS开发学习笔记八 图片浏览器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/abc6368765/article/details/81878939

首先是效果图:demo下载

效果图

  • 把图片素材放入Assets.xcassets

图片素材

  • 创建plist文件(本质是xml文件)

plist文件

  • 界面的搭建,按照页面布局拖拽添加控件

页面

  • ViewController具体代码

#import "ViewController.h"

@interface ViewController ()

// 自己写一个索引, 来控制当前显示的是第几张图片
// 这个属性一开始没有赋值就是0
@property (nonatomic, strong) NSArray *pic;
@property (nonatomic, assign) int index;

//当前序号
@property (weak, nonatomic) IBOutlet UILabel *labIndex;
//图片素材
@property (weak, nonatomic) IBOutlet UIImageView *ivPic;
//标题
@property (weak, nonatomic) IBOutlet UILabel *labTxt;
//上一张浏览按钮
@property (weak, nonatomic) IBOutlet UIButton *btnPreview;
//下一张浏览按钮
@property (weak, nonatomic) IBOutlet UIButton *btnNext;

- (IBAction)preview:(UIButton *)sender;
- (IBAction)next:(UIButton *)sender;


@property (weak, nonatomic) IBOutlet UIButton *btnPreviewNew;
@property (weak, nonatomic) IBOutlet UIButton *btnNextNew;

- (IBAction)previewNew:(id)sender;
- (IBAction)nextNew:(id)sender;

@end

@implementation ViewController

// 重写pic属性的get方法
//------------- 懒加载数据 -----------------
- (NSArray *)pic
{
    if (_pic == nil) {
        // 写代码加载pic.plist文件中的数据到_pic
        // 1. 获取pic.plist文件的路径
        // 获取pic.plist文件的路径赋值给path变量
        // [NSBundle mainBundle]表示获取这个app安装到手机上时的根目录
        // 然后在app的安装的根目录下搜索pic.plist文件的路径
        NSString *path = [[NSBundle mainBundle] pathForResource:@"pic.plist" ofType:nil];
//        let imgPath:String = Bundle.main.path(pathForResource: "a.jpg", ofType: "")!;
        // 读取文件
        NSArray *array = [NSArray arrayWithContentsOfFile:path];
        _pic = array;
    }
    return _pic;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.btnPreview.enabled = false;
    self.btnPreviewNew.enabled = false;
    // 3. 把获取到的数据设置给界面上的控件
    self.labIndex.text = [NSString stringWithFormat:@"%d/%ld", self.index + 1, self.pic.count];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (IBAction)preview:(UIButton *)sender {
    // 1. 让索引++
    self.index--;

    // 2. 从数组中获取当前这张图片的数据
    NSDictionary *dict = self.pic[self.index];

    // 3. 把获取到的数据设置给界面上的控件
    self.labIndex.text = [NSString stringWithFormat:@"%d/%ld", self.index + 1, self.pic.count];
    // 通过image属性来设置图片框里面的图片
    self.ivPic.image = [UIImage imageNamed:dict[@"icon"]];

    // 设置这张图片的标题
    self.labTxt.text = dict[@"title"];

    //上一张按钮可以点击
    self.btnNext.enabled = true;
    self.btnNextNew.enabled = true;
    if(self.index == 0){
        //下一张按钮不可以点击
        self.btnPreview.enabled = false;
        self.btnPreviewNew.enabled = false;
    }
}

- (IBAction)next:(UIButton *)sender {
    // 1. 让索引++
    self.index++;

    // 2. 从数组中获取当前这张图片的数据
    NSDictionary *dict = self.pic[self.index];

    // 3. 把获取到的数据设置给界面上的控件
    self.labIndex.text = [NSString stringWithFormat:@"%d/%ld", self.index + 1, self.pic.count];

    // 通过image属性来设置图片框里面的图片
    self.ivPic.image = [UIImage imageNamed:dict[@"icon"]];

    // 设置这张图片的标题
    self.labTxt.text = dict[@"title"];

    //上一张按钮可以点击
    self.btnPreview.enabled = true;
    self.btnPreviewNew.enabled = true;
    if(self.index == self.pic.count-1){
        //下一张按钮不可以点击
        self.btnNext.enabled = false;
        self.btnNextNew.enabled = false;
    }
}


- (IBAction)previewNew:(id)sender {
    self.index--;
    [self setData];
}

- (IBAction)nextNew:(id)sender {
    self.index++;
    [self setData];
}

// 设置控件数据
- (void)setData
{
    // 2. 从数组中获取当前这张图片的数据
    NSDictionary *dict = self.pic[self.index];

    // 3. 把获取到的数据设置给界面上的控件
    self.labIndex.text = [NSString stringWithFormat:@"%d/%ld", self.index + 1, self.pic.count];
    // 通过image属性来设置图片框里面的图片
    self.ivPic.image = [UIImage imageNamed:dict[@"icon"]];

    // 设置这张图片的标题
    self.labTxt.text = dict[@"title"];



    // 控制上一张与下一张按钮是否可用
    self.btnPreview.enabled = (self.index != 0);
    self.btnPreviewNew.enabled = (self.index != 0);
    self.btnNext.enabled = (self.index != (self.pic.count - 1));
    self.btnNextNew.enabled = (self.index != (self.pic.count - 1));

}

@end

猜你喜欢

转载自blog.csdn.net/abc6368765/article/details/81878939
今日推荐