03-图片浏览器(plist的简单应用)

ViewController.h文件中:

 1 @interface ViewController : UIViewController
 2 
 3 - (IBAction)sliderValueChange:(UISlider *)sender;
 4 - (IBAction)setting;
 5 - (IBAction)nightMode:(UISwitch *)sender;
 6 - (IBAction)imageSizeChange:(UISlider *)sender;
 7 
 8 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
 9 @property (weak, nonatomic) IBOutlet UILabel *imageNo;
10 @property (weak, nonatomic) IBOutlet UILabel *imageDesc;
11 @property (weak, nonatomic) IBOutlet UIView *settingView;
12 
13 @end

ViewController.m文件中:

 1 #import "ViewController.h"
 2 
 3 @interface ViewController ()
 4 {
 5     NSArray *_allDesc;
 6 }
 7 
 8 @end
 9 
10 @implementation ViewController
11 
12 #pragma mark 控制器的view加载完毕后会调用一次
13 - (void)viewDidLoad {
14     [super viewDidLoad];
15     // Do any additional setup after loading the view, typically from a nib.
16     
17     // 获取所有的描述(通过解析plist文件来创建数组对象,比如传人文件的全路径)
18     // 如果要访问项目中的资源包里面的所有资源,应该用mainBundle
19     NSBundle *bundle = [NSBundle mainBundle];
20     // 获取文件的全路径
21     NSString *path = [bundle pathForResource:@"descs" ofType:@"plist"];
22     // 加载path对应的文件来创建数组(数组变量定义为私有属性)
23     _allDesc = [NSArray arrayWithContentsOfFile:path];
24     
25     _imageDesc.text = _allDesc[0];
26     
27 }
28 
29 #pragma mark 控制图片浏览切换
30 - (IBAction)sliderValueChange:(UISlider *)sender {
31     
32     // 1.设置中间的图片
33     _imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%.f.png", sender.value]];
34     
35     // 2.设置序号(第几张)
36     _imageNo.text = [NSString stringWithFormat:@"%.f/16", sender.value + 1];
37     
38     // 3.设置描述
39     int no = (int)(sender.value + 0.5); //(int)强制转换不进行四舍五入
40     _imageDesc.text = _allDesc[no];
41 }
42 
43 #pragma mark 设置按钮
44 - (IBAction)setting {
45     [UIView beginAnimations:nil context:nil];
46     [UIView setAnimationDuration:0.5];
47     
48     CGRect tempFrm = _settingView.frame;
49     
50     if (tempFrm.origin.y >= self.view.frame.size.height) {
51         tempFrm.origin.y = self.view.frame.size.height - tempFrm.size.height;
52     }
53     else {
54         tempFrm.origin.y = self.view.frame.size.height + tempFrm.size.height;
55     }
56     
57     _settingView.frame = tempFrm;
58     
59     [UIView commitAnimations];
60 }
61 
62 #pragma mark 夜间模式
63 - (IBAction)nightMode:(UISwitch *)sender {
64     if (sender.on) {
65         self.view.backgroundColor = [UIColor grayColor];
66     }
67     else {
68         self.view.backgroundColor = [UIColor whiteColor];
69     }
70 }
71 
72 #pragma mark 改变图片大小
73 - (IBAction)imageSizeChange:(UISlider *)sender {
74     
75     _imageView.transform = CGAffineTransformMakeScale(sender.value, sender.value);
76 }
77 @end

一、viewDidLoad
1.这是控制器的一个方法
2.当控制器的view创建完毕的时候会调用一次(仅一次)

二、UISlider 滑动块控件
1.value属性可以获得当前的进度值
2.按钮的value发送改变了,会触发UIControlEventValueChanged事件

三、Plist文件的使用
1.加载一个Plist文件的时候,会返回一个plist的根节点对象(Root)

四、NSBundle的使用
1.利用NSBundle可以访问某个资源包的内容
2.如果访问软件中的最主要资源包的内容,应该使用mainBundle
NSBundle *bundle = [NSBundle mainBundle];
3.利用NSBundle获取文件的全路径
NSString *path = [bundle pathForResource:@"descs" ofType:@"plist"];

descs.plist文件内容:

界面效果图:

原文地址:https://www.cnblogs.com/smile-smile/p/5103774.html