• UI基础图片浏览器改进1


      上篇文章实现了一个使用UIImageView\UILabel\UIButton实现一个综合的小的图片浏览器,虽然能实现功能,但是代码有很大的问题,这里进行第一次改进:将代码中重复性的代码进行封装,封装成一个方法,用用户点击按钮时,调用点击按钮的响应方法,这个方法中直接调用封装的这个方法.

      下面直接上代码,storyboard拖线跟上篇一样,这里不再重复

      ViewController.m

      

     1 //
     2 //  ViewController.m
     3 //  01-图片浏览器1
     4 //
     5 //  Created by hukezhu on 15/5/12.
     6 //
     7 //
     8 
     9 #import "ViewController.h"
    10 
    11 @interface ViewController ()
    12 /**  界面上最上面显示索引的label*/
    13 @property (weak, nonatomic) IBOutlet UILabel *noLabel;
    14 /**  显示图片的控件*/
    15 @property (weak, nonatomic) IBOutlet UIImageView *iconView;
    16 /**  描述图片内容的label*/
    17 @property (weak, nonatomic) IBOutlet UILabel *descLabel;
    18 /**
    19  *  左边按钮的属性,用来控制按钮的不可用状态
    20  */
    21 @property (weak, nonatomic) IBOutlet UIButton *left;
    22 /**
    23  *  右边按钮的属性,用来控制按钮的不可用状态
    24  */
    25 @property (weak, nonatomic) IBOutlet UIButton *right;
    26 /**
    27  *  索引,记录位置
    28  */
    29 @property (nonatomic ,assign)int index;
    30 /**
    31  *  上一张的点击响应方法
    32  */
    33 - (IBAction)previous;
    34 /**
    35  *  下一张的点击响应方法
    36  */
    37 - (IBAction)next;
    38 @end
    39 
    40 @implementation ViewController
    41 
    42 - (void)viewDidLoad {
    43     [super viewDidLoad];
    44 
    45     //首先将当前计数器设置为-1,然后再调用next方法,即可显示首页面.
    46     self.index = -1;
    47     [self next];
    48 }
    49 //发现代码中previous和next方法中的代码基本上一样,属于重复性的,可以将其封装成一个方法
    50 
    51 - (void)move{
    52 
    53     switch (self.index) {
    54         case 0:
    55             self.noLabel.text = @"1/5";
    56             self.iconView.image = [UIImage imageNamed:@"biaoqingdi"];
    57             self.descLabel.text = @"哥牛逼啊";
    58             break;
    59         case 1:
    60             self.noLabel.text = @"2/5";
    61             self.iconView.image = [UIImage imageNamed:@"bingli"];
    62             self.descLabel.text = @"亮瞎眼啊";
    63             break;
    64         case 2:
    65             self.noLabel.text = @"3/5";
    66             self.iconView.image = [UIImage imageNamed:@"chiniupa"];
    67             self.descLabel.text = @"小姑娘吃牛排比杀牛还费劲";
    68             break;
    69         case 3:
    70             self.noLabel.text = @"4/5";
    71             self.iconView.image = [UIImage imageNamed:@"danteng"];
    72             self.descLabel.text = @"蛋疼";
    73             break;
    74         case 4:
    75             self.noLabel.text = @"5/5";
    76             self.iconView.image = [UIImage imageNamed:@"wangba"];
    77             self.descLabel.text = @"王八";
    78             break;
    79             
    80     }
    81     //设置按钮的不可用状态,当计数器为0时,左边的按钮为不可用状态
    82     self.left.enabled = self.index != 0;
    83     //当计数器为4时,右边的按钮为不可用状态
    84     self.right.enabled = self.index != 4;
    85 }
    86 - (IBAction)previous{
    87 
    88     //计数器减一
    89     self.index--;
    90     [self move];
    91 }
    92 - (IBAction)next{
    93     self.index++;
    94     [self move];
    95 }
    96 @end

      这段代码中,将实现选择的那段代码,封装成了一个move方法,使用的时候直接调用这个move方法即可.代码比较简单,不再重复了.

      分析代码,还是有些问题,我们数据直接写在了move方法中,这种方法不太好,分析数据,发现每个switch选项中,序号设置这一项可以提取出来,而剩下的两个数据可以使用字典来存储,下篇文章,我会再次改进这个代码,将数据存储到字典中.

  • 相关阅读:
    Mybatis入门
    Ajax
    产品经理之产品规划
    产品经理之用户研究(下)
    产品经理之用户研究(上)
    Spring Cloud
    Spring MVC
    synchronized
    Spring Boot入门
    Spring
  • 原文地址:https://www.cnblogs.com/hukezhu/p/4500501.html
Copyright © 2020-2023  润新知