• 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文件内容:

    界面效果图:

  • 相关阅读:
    5. java 的类和对象
    java 的变量以及构造方法
    idea运行Test时为啥会运行两次
    MYSQL(三)
    MYSQL(二)
    MySql密码操作
    MYSQL(一)
    【数据结构】2.线性表及其结构
    【数据结构】1.数据结构及算法的入门
    推荐四款可视化工具,解决99%的可视化大屏需求
  • 原文地址:https://www.cnblogs.com/smile-smile/p/5103774.html
Copyright © 2020-2023  润新知