一、程序功能分析

  1)点击左右箭头切换图片、序号、描述;

  2)如果是首张图片,左边箭头失效;

  3)如果是最后一张图片,右边箭头失效。

二、程序实现

  定义确定图片位置、大小的常量:

 //ViewController.m
CGFloat const POTOIMAGEWIDTH = 120.0; //图片宽度
CGFloat const POTOIMAGEHEIGHT = 180.0; //图片高度
CGFloat const POTOIMAGEX = ; //图片X轴坐标
CGFloat const POTOIMAGEY = ; //图片Y轴坐标

  定义相关的属性:

 //ViewController.m
@interface ViewController ()
@property (nonatomic, strong) UILabel *firstLabel; //显示图片的序号
@property (nonatomic, strong) UILabel *lastLabel; //显示图片内容描述
@property (nonatomic, strong) UIImageView *imageIcon; //图片
@property (nonatomic, strong) UIButton *leftButton; //左翻按钮
@property (nonatomic, strong) UIButton *rightButton; //右翻按钮
@property (nonatomic, assign) int i; //标记所显示图片的序号,从0开始
@end

  重写 viewDidLoad 方法,用代码创建控件:

 //ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
self.i = ; //创建显示图片序号的UILabel控件
UILabel *headLabel = [[UILabel alloc] initWithFrame:CGRectMake(, , , )];
[headLabel setTextAlignment:NSTextAlignmentCenter]; //居中显示
[headLabel setTextColor:[UIColor redColor]]; //设置字符颜色
[self.view addSubview:headLabel];
self.firstLabel = headLabel; //创建一个装载图片的控件
UIImageView *potoImage = [[UIImageView alloc] initWithFrame:CGRectMake(POTOIMAGEX, POTOIMAGEY, POTOIMAGEWIDTH, POTOIMAGEHEIGHT)];
UIImage *image = [UIImage imageNamed:@"beauty0"];
potoImage.image = image;
[self.view addSubview:potoImage];
self.imageIcon = potoImage; //创建图片下边用来描述图片信息的UILabel控件
UILabel *descLabel = [[UILabel alloc] initWithFrame:CGRectMake(, , , )];
[descLabel setTextAlignment:NSTextAlignmentCenter];
[descLabel setTextColor:[UIColor blueColor]];
[self.view addSubview:descLabel];
self.lastLabel = descLabel; //创建两个方向键按钮
UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
leftButton.frame = CGRectMake(, self.view.center.y, , );
[leftButton setBackgroundImage:[UIImage imageNamed:@"leftRow"] forState:UIControlStateNormal];
[self.view addSubview:leftButton];
self.leftButton = leftButton;
[leftButton addTarget:self action:@selector(leftClicked:) forControlEvents:UIControlEventTouchUpInside]; UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
rightButton.frame = CGRectMake(, self.view.center.y, , );
[rightButton setBackgroundImage:[UIImage imageNamed:@"rightRow"] forState:UIControlStateNormal];
[self.view addSubview:rightButton];
self.rightButton = rightButton;
[rightButton addTarget:self action:@selector(rightClicked:) forControlEvents:UIControlEventTouchUpInside]; [self change]; //初始化界面
}

  下面实现 change 方法,每次调用该方法,将按照 self.i 的大小显示相应的图片及其他内容:

 //视图内容更新与显示
- (void)change {
[self.firstLabel setText:[NSString stringWithFormat:@"%d/5", self.i+]];
switch (self.i) {
case :
self.lastLabel.text = @"美女1号";
self.imageIcon.image = [UIImage imageNamed:@"beauty0"];
break;
case :
self.lastLabel.text = @"美女2号";
self.imageIcon.image = [UIImage imageNamed:@"beauty1"];
break;
case :
self.lastLabel.text = @"美女3号";
self.imageIcon.image = [UIImage imageNamed:@"beauty2"];
break;
case :
self.lastLabel.text = @"美女4号";
self.imageIcon.image = [UIImage imageNamed:@"beauty3"];
break;
case :
self.lastLabel.text = @"美女5号";
self.imageIcon.image = [UIImage imageNamed:@"beauty4"];
break;
}
self.leftButton.enabled = (self.i != ); //显示第1张图片时,左翻按钮失效
self.rightButton.enabled = (self.i != ); //显示第5张图片时,右翻按钮失效
}

  实现 self.leftButton 的响应事件 leftClicked:

 - (void)leftClicked:(UIButton *)button {
self.i--;
[self change];
}

  实现 self.rightButton 的响应事件 rightClicked:

 - (void)rightClicked:(UIButton *)button {
self.i++;
[self change];
}

参考博客:iOS开发UI篇—简单的浏览器查看程序

示例代码:http://pan.baidu.com/s/1mgZwJRq

iOS开发基础-图片切换(1)的更多相关文章

  1. iOS开发基础-图片切换(4)之懒加载

    延续:iOS开发基础-图片切换(3),对(3)里面的代码用懒加载进行改善. 一.懒加载基本内容 懒加载(延迟加载):即在需要的时候才加载,修改属性的 getter 方法. 注意:懒加载时一定要先判断该 ...

  2. iOS开发基础-图片切换(3)之属性列表

    延续:iOS开发基础-图片切换(2),对(2)里面的代码用属性列表plist进行改善. 新建 Property List 命名为 Data 获得一个后缀为 .plist 的文件. 按如图修改刚创建的文 ...

  3. iOS开发基础-图片切换(2)之懒加载

    延续:iOS开发基础-图片切换(1),对(1)里面的代码进行改善. 在 ViewController 类中添加新的数组属性:  @property (nonatomic, strong) NSArra ...

  4. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  5. iOS开发基础-九宫格坐标(5)

    继续在iOS开发基础-九宫格坐标(4)的基础上进行优化. 一.改进思路 1)iOS开发基础-九宫格坐标(4)中 viewDidLoad 方法中的第21.22行对控件属性的设置能否拿到视图类 WJQAp ...

  6. iOS开发基础-九宫格坐标(4)

    对iOS开发基础-九宫格坐标(3)的代码进行进一步优化. 新建一个 UIView 的子类,并命名为 WJQAppView ,将 appxib.xib 中的 UIView 对象与新建的视图类进行关联. ...

  7. iOS开发基础-九宫格坐标(3)之Xib

    延续iOS开发基础-九宫格坐标(2)的内容,对其进行部分修改. 本部分采用 Xib 文件来创建用于显示图片的 UIView 对象. 一.简单介绍  Xib 和 storyboard 的比较: 1) X ...

  8. iOS开发基础-九宫格坐标(2)之模型

    在iOS开发基础-九宫格(1)中,属性变量 apps 是从plist文件中加载数据的,在 viewDidLoad 方法中的第20行.26行中,直接通过字典的键名来获取相应的信息,使得 ViewCont ...

  9. iOS开发——总结篇&IOS开发基础知识

    IOS开发基础知识 1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断 ...

随机推荐

  1. Kubernetes审计日志方案

    前言 当前Kubernetes(K8S)已经成为事实上的容器编排标准,大家关注的重点也不再是最新发布的功能.稳定性提升等,正如Kubernetes项目创始人和维护者谈到,Kubernetes已经不再是 ...

  2. 三种方法实现CSS三栏布局

    本文由云+社区发表 作者:前端林子 本文会分别介绍三种CSS实现三栏布局的方法,可在浏览器中打开查看效果 1.方法一:自身浮动的方法 实现方法:需要左栏向左浮动,右栏向右浮动,中间设左右margin来 ...

  3. Oracle学习笔记三

    一.创建表空间 表空间是ORACLE数据库的逻辑单元.数据库--表空间 一个表空间可以与多个数据文件(物理结构)关联一个数据库下可以建立多个表空间,一个表空间可以建立多个用户个用户下可以建立多个表. ...

  4. AppBoxFuture(四). 随需而变-Online Schema Change

      需求变更是信息化过程中的家常便饭,而在变更过程中如何尽可能小的影响在线业务是比较头疼的事情.举个车联网监控的例子:原终端设备上传车辆的经纬度数据,新的终端设备支持同时上传速度数据,而旧的车辆状态表 ...

  5. 痞子衡嵌入式:飞思卡尔Kinetis开发板OpenSDA调试器那些事(上)- 背景与架构

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis MCU开发板板载OpenSDA调试器(上篇). 众所周知,嵌入式软件开发几乎离不开调试器,因为写一个稍有代码规模 ...

  6. SpringBoot基础系列-SpringBoot配置

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9990680.html SpringBoot基础系列-SpringBoot配置 概述 属性 ...

  7. percona-toolkit 之 【pt-archiver】

    背景: 工作上需要删除或则归档一张大表,这时候用pt-archiver可以很好的满足要求,其不仅可以归档数据,还有删除.导出到文件等功能.并且在主从架构当中,可以兼顾从库(一个或则多个)进行归档,避免 ...

  8. Docker多主机管理(八)--技术流ken

    docker多主机管理 前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和 ...

  9. AI时代大点兵-国内外知名AI公司2018年最新盘点

    AI时代大点兵-国内外知名AI公司2018年最新盘点 导言 据腾讯研究院统计,截至2017年6月,全球人工智能初创企业共计2617家.美国占据1078家居首,中国以592家企业排名第二,其后分别是英国 ...

  10. as无法关联git

    转载请标明出处:https://www.cnblogs.com/tangZH/p/10060573.html 从gitlab上面把项目拉下来之后,用as打开,发现as无法关联git,没有git相关的菜 ...