ios使用plist实现相册功能

news2024/11/24 3:55:08

第一步:照片复制到Assets文件夹再创建plist

第二步:页面设计

第三步:代码实现

//
//  PhotoViewController.m
//  study2024
//
//  Created by zhifei  zhu on 2024/8/11.
//

#import "PhotoViewController.h"

@interface PhotoViewController ()
@property (weak, nonatomic) IBOutlet UIButton *btnPre;
@property (weak, nonatomic) IBOutlet UIButton *btnNext;
@property (weak, nonatomic) IBOutlet UIImageView *img;
@property (weak, nonatomic) IBOutlet UILabel *lblTitle;
@property (weak, nonatomic) IBOutlet UILabel *lblDescrible;
@property (weak,nonatomic) NSArray *picArr;
@property (nonatomic) int index;
- (IBAction)pre:(id)sender;
- (IBAction)next:(id)sender;

-(void) getImagewithIndex:(int)index;
@end

@implementation PhotoViewController
-(NSArray *)picArr{
    if(_picArr==nil)
    {
        NSString *path=[[NSBundle mainBundle]pathForResource:@"pic.plist" ofType:nil];
        _picArr=[NSArray arrayWithContentsOfFile:path];
    }
    return _picArr;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    [self getImagewithIndex:0];
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/



- (IBAction)pre:(id)sender {
    self.index--;
    [self getImagewithIndex:self.index];
}
- (IBAction)next:(id)sender {
    self.index++;
    [self getImagewithIndex:self.index];
    
  
}

-(void) getImagewithIndex:(int)index{
    NSDictionary *dictionary=self.picArr[index];
    self.lblTitle.text=[NSString stringWithFormat:@"%d/%d",index+1,_picArr.count];
    self.lblDescrible.text=dictionary[@"title"];
    self.img.image=[UIImage imageNamed:dictionary[@"icon"]];
    self.btnPre.enabled=(index!=0);
    self.btnNext.enabled=(index!=(self.picArr.count-1));

}
@end

效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车系统源码

🚗💨打车、顺风车、滴滴车&跑腿系统,一键解决出行生活难题! 一、出行新选择,打车从此不再难 忙碌的生活节奏,让我们常常需要快速、便捷的出行方式。打车、顺风车、滴滴车系统,正是为了满足…

通天星CMSV6代码审计

fofa指纹 body"./open/webApi.html"||body"/808gps/" /gpsweb/WEB-INF/classes/config/version.conf中可以查看版本。 框架分析 默认安装目录为C:\Program Files\CMSServerV6\ 默认账户:admin/admin 框架结构 跟进web.xml,可以看…

WebGL 入门:开启三维网页图形的新篇章(上)

一、引言 介绍 WebGL 的背景和意义 一、背景 WebGL 是一种 JavaScript API,用于在网页上呈现三维图形。 它是在 2009 年由 Khronos Group 提出的,并于 2011 年成为 W3C 的标准。 在 WebGL 出现之前,网页上的三维图形主要是通过插件&…

TEMU卖家们如何提高temu店铺排名、权重、流量、采购测评成功率?

一、什么叫做自养号测评? 自养号测评类似于国内的某宝S单,就是通过搭建海外的服务器和IP采用海外真实买家资料来注册、养号、下单。 二、自养号测评有哪些作用? 自养号快速提高产品的排名、权重和销量,可以提升订单量、点赞(rat…

Excel工作表同类数据合并工具

下载地址:https://pan.quark.cn/s/81b1aeb45e4c 在Excel表格中,把多行同类数据合并为一行是件令人无比头痛的事情:首先,你得确定哪几条记录是可合并的同类数据,人工对比多个字段难免顾此失彼挂一漏万;其次&…

【深度学习】【文本LLM】如何使用文本相似度挑选语料?

在GitHub上挑选和优化语料库的开源工具与方法 在GitHub上挑选和优化语料库的开源工具与方法 在数据科学和自然语言处理(NLP)的世界里,拥有一个干净且高质量的语料库是成功的关键。然而,随着数据量的增加,处理和优化这些数据变得尤为重要。幸运的是,GitHub上提供了许多开…

分享一个基于SpringBoot的戏剧戏曲科普平台的设计与实现(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

汇编语言:loop指令

loop指令是循环指令,在8086CPU中,所有的循环指令都是短转移,其对应的机器指令有2个字节,低8位字节存放的是操作码;高8位字节存放的是转移位移(相对于当前IP的位移),用补码形式表示&a…

C# NetworkStream、ConcurrentDictionary、Socket类、SerialPort、局域网IP 和广域网IP

一、NetworkStream 什么是NetworkStream? NetworkStream 是 .NET Framework 中用于在网络上进行数据传输的流类。它属于System.Net.Sockets 命名空间,并提供了通过网络连接进行读写操作的功能。NetworkStream 主要用于处理从网络套接字(Soc…

input 控制光标所在的位置

需求:鼠标一点击input输入框 就要将焦点至于 输入框的最后面,使用户不能在内容的中间 删除或者修改 const focusEnd (value) > {var inpEl value.target // 获取dom元素console.log(inpEl, LLL);var length value.target.value.length // 获取输入…

【Hot100】LeetCode—48. 旋转图像

目录 1- 思路两次遍历实现(先行,后主对角互换) 2- 实现⭐48. 旋转图像——题解思路 3- ACM 实现 原题连接:48. 旋转图像 1- 思路 两次遍历实现(先行,后主对角互换) 技巧:旋转 90 …

通过反汇编解析crash问题

背景: 用户反馈的问题,有时候我们拿到log,发现有crash问题,有堆栈打印,能看到具体出错的函数,但是无法定位具体出错的行数和内容,这个时候就需要用到反汇编辅助我们定位问题。 反汇编方法: 通过objdump反汇…

一起学习LeetCode热题100道(43/100)

43.验证二叉搜索树(学习) 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。…

spring bean的循环依赖

在Spring框架中,Bean的循环依赖是一个常见的问题,它指的是两个或多个Bean之间通过构造函数、Setter方法或字段注入等方式形成了相互依赖的闭环。Spring框架提供了强大的依赖注入功能,同时也提供了多种机制来处理循环依赖的情况,确…

【SCI论文写作】工程类论文写作(二)引言

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

护眼灯对眼睛有伤害吗?防止三大禁忌隐患

护眼灯对眼睛有伤害吗?护眼灯是现代生活中非常常见的照明工具,它在家庭和办公场所都得到了广泛应用。然而,随着人们对眼睛健康的关注日益增加,关于护眼灯是否可能对眼睛造成伤害的疑问也随之产生。这些疑问不仅涉及到人们的视力健…

黄晓娟:钱输光了她还伺候你?赵本山:她不伺候谁伺候?

黄晓娟:钱输光了她还伺候你?赵本山:她不伺候谁伺候? --小品《麻将豆腐》(中1)的台词与解说 (接上) 赵本山(饰演大姐夫):诈和了 瞅好啊整不好让…

工作任务紧急程度如何快速区分?

在繁忙的工作中,我们每天都需要处理大量的工作任务。如果不将这些任务仔细区分,就很难保证按时完成所有任务。面对如此多的任务,仅凭脑力很难将它们一一整理和区分。这时,选择一款高效的待办事项管理软件,就成了一个不…

深度学习入门-01

1、安装Anaconda 创建一个虚拟环境,在Anaconda Prompt中创建,环境名称叫做pytorch,使用的python版本是3.10 conda create -n pytorch python3.10在这环境中需要安装的包,选择yes 激活环境: conda activate pytorch如…

排序算法之--插入排序

文章目录 一、简介二、算法思路分析三、算法复杂度分析:3.1、时间复杂度方面:3.2、空间复杂度方面: 四、代码实现: 一、简介 插入排序是一种简单直观的排序算法,‌它的工作原理是通过构建有序序列,‌该算法…