一、程序功能分析

  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. SQL优化总结之二

    1.列优先 如图有表A和表B,对其查询时,会有如下语句: select a.*,b.* from a,b where a.id = b.a_id; 注意from 后边的表名, a.如果多表查询是完全无 ...

  2. Java线程Thread的状态解析以及状态转换分析 多线程中篇(七)

    线程与操作系统中线程(进程)的概念同根同源,尽管千差万别. 操作系统中有状态以及状态的切换,Java线程中照样也有. State 在Thread类中有内部类 枚举State,用于抽象描述Java线程的 ...

  3. 跨站点请求伪造(CSRF)学习

    一.CSRF介绍 伪造一个站点,在站点中伪造一个向其他站点的请求,在用户访问该站点时让用户执行 假设有如下URL能删除一篇文章: 攻击者在自己的域中构造一个页面: 内容为: 使用一个img标签,其地址 ...

  4. 第2章 术语 - Identity Server 4 中文文档(v1.0.0)

    规范.文档和对象模型等都使用特定的术语来表述. 2.1 IdentityServer IdentityServer是OpenID Connect提供程序 - 它实现OpenID Connect和OAu ...

  5. AI书单

    1.<TensorFlow实战>   黄文坚 2.<Machine Learning> [美]Tom Mitchell 3.<机器学习> 周志华  

  6. SAP MM ME1M报表结果不科学?

    SAP MM ME1M报表结果不科学? 做过SAP MM顾问的都知道,报表ME1M可以查询物料的info record列表,即是说可以以列表的形式批量显示多个物料的采购价格主数据. 但是这个报表有个不 ...

  7. [ SHELL编程 ] 字符串空格和文件空行删除

    1.删除字符串中空格 (1)删除行首空格 (2)删除行尾空格 (3)删除前.后空格,不删除中间空格 (4) 删除字符串中所有空格 echo " 123 567 " | sed 's ...

  8. PM过程管理成熟度1级

    之前,我已经从项目实现的角度.企业管理诉求两方面,分析了PM的核心能力架构,以及其在过程管理方面的能力等级.接下来,Fancier凡奉信息会站在PM能力成长的角度,横向与纵向阐述每一成熟度等级PM的过 ...

  9. 深入了解Object.defineProperty

    原来写文章都是一次写两三个小时写完,偶尔看到一个人的博客了解到还有草稿箱这个功能,所以以后写文章的时候就舒服多了哈哈,可以存起来再发,不需要一口气写完了 最近一直在看JavaScript高级程序设计, ...

  10. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

    一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 使用Visual Studio Code开发基于解决方案(sln+csproj)的项目 Visual ...