版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/abc6368765/article/details/81878939
首先是效果图:demo下载
- 把图片素材放入Assets.xcassets
- 创建plist文件(本质是xml文件)
- 界面的搭建,按照页面布局拖拽添加控件
- 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