自己做了一遍,现在再复习一下,总结一下。

最终效果如下

       

1、新建一个工程Single View Application

总体如下

不过要关闭自动布局功能

这是按下设置按钮显示的界面
默认是隐藏的,可以在设置时改变坐标显示出来,之后在隐藏

关于导入图片:

  可以新建一个组,将图片拖拽到文件夹里。

给各个组件设置默认值,这里准备的时16张图片,所以都是按16张算得

  顶部默认是1/16

  滑动条是0到15,默认是0

  图片默认显示 0.png

2、然后给各个需要的控件添加属性和监听事件

如下:

 #import <UIKit/UIKit.h>

 @interface SLQViewController : UIViewController
- (IBAction)sliderValueChanged:(UISlider *)slider; // 滑动条-改变图显示顺序的监听事件
@property (weak, nonatomic) IBOutlet UIImageView *imageView; // 图片显示对象
@property (weak, nonatomic) IBOutlet UILabel *imageNum; // 顶部图片显示的顺序
@property (weak, nonatomic) IBOutlet UILabel *imageInfo; // 底部图片的描述信息
@property (weak, nonatomic) IBOutlet UIView *settingView; // 设置界面
- (IBAction)setting:(id)sender; // 设置按钮监听事件
- (IBAction)imageSizeChange:(UISlider *)sender;// 设置界面改变图片大小的监听事件
- (IBAction)nightModel:(UISwitch *)sender;// 设置界面switch按钮的监听事件 @end

3、主界面代码实现

  1、先让顶部的lable标签随滚动条值的改变而改变

  这里定义的又 imageNum 属性来控制lable标签。还有滑动条的监听事件 imageSizeChange

  首先获取滑动条改变值,然后设置要显示在 imageNum 的信息。

    // 设置显示第几张, %.f 不保存任何小数,因为是从0开始的,所以显示要加1
_imageNum.text = [NSString stringWithFormat:@"%.f/16",slider.value + ];

  随着滑动条的拖拽,imageNum 的值一直在改变。

  2、接着显示图片  imageView

  首先获取滑动条改变值,然后设置要显示在 imageView 的信息。

     // 设置中间的图片
// 获得文件名 %.f 不保存任何小数,图片的编号是从0开始的,直接取就行
NSString *name = [NSString stringWithFormat:@"%.f.png",slider.value]; //
4   _imageView.image = [UIImage imageNamed:name]; // 设置要显示的图片到控件

  随着滑动条的拖拽,图片 的值一直在改变。注意观察和顶部文字顺序是否一致。

  3、显示图片的文字描述信息iamgeInfo

  因为有十几张图片的描述信息,所以我们使用plist来保存文字信息。然后通过代码读取文件获得信息。

  首先新建一个plist文件

  

  然后选择类型为数组,点击加号添加条目

  

  添加结果如下

  

  现在就来读取这个plist文件,需要使用到一个类 NSBundle,获取主程序的全路径

  NSBundle 会获取主程序的安装目录,可以读取下面的配置文件。使用方式如下:
     // 如果要访问资源包中得所有资源,可以通过这个类访问,
NSBundle *bundle = [NSBundle mainBundle];
// 获取全路径
NSString *path = [bundle pathForResource:@"desc" ofType:@"plist"];
// 加载所有描述
_array= [NSArray arrayWithContentsOfFile:path];

  其中_array 是定义的一个NSArray数组的属性,用来保存文字描述信息

  又因为这个文字描述从读取出来后一直没有改变,所以把它的读取放在 viewDidLoad 方法中。

  viewDidLoad方法会在主界面加载后执行,并且只会执行一次。

  读取文件如下

 - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. // 设置描述
// 如果要访问资源包中得所有资源,可以通过这个类访问,
NSBundle *bundle = [NSBundle mainBundle];
// 获取全路径
NSString *path = [bundle pathForResource:@"desc" ofType:@"plist"];
// 加载所有描述
_array= [NSArray arrayWithContentsOfFile:path];
_imageInfo.text = _array[]; // 设置默认显示描述
}

  设置要显示的描述 改变imageInfo控件的text属性的值

     // 设置描述,因为slider.value是按浮点值进行改变的,强制转换成int型要进行四舍五入1.40-> 1,但是如果加0.5就会改善这种误差
int index = (int)(slider.value + 0.5); // +0.5是为了消除强制转换的四舍五入所
_imageInfo.text = _array[index]; // 设置显示描述

4、设置界面的实现 settingView

  1、实现按下弹出,再次按下隐藏

  首先在main.storyboard界面将settingView隐藏起来,将坐标改到刚好隐藏到底部。我这里设置的y坐标是480  

 - (IBAction)setting:(id)sender
{
// 动画开始
[UIView beginAnimations:nil context:nil];
// 设置动画时间
[UIView setAnimationDuration:0.5];
// 取出中点,现在是隐藏状态的中点
CGPoint center = _settingView.center; // 修改y值,如果要_settingView的y坐标值和整个主界面的高度相同,那么就没显示到主界面中
if (_settingView.frame.origin.y == self.view.frame.size.height) // 没出现就弹出
{
center.y -= _settingView.bounds.size.height; // _settingView的y值减去自身的高度,那么可将界面显示到主界面
}
else
{
center.y += _settingView.bounds.size.height; // 已经出现就隐藏
}
// 重新赋值
_settingView.center = center;
// 执行动画
[UIView commitAnimations];
}

  2、夜间模式实现

  这里实现的比较简单,知识改变主界面的背景色

 - (IBAction)nightModel:(UISwitch *)sender
{
if (!sender.on) // 如果开关关闭就显示白色
{
self.view.backgroundColor = [UIColor whiteColor]; // 关闭--背景显示白色 }
else // 否则显示灰色
self.view.backgroundColor = [UIColor darkGrayColor]; // 打开--背景显示灰色
}

  3、图片大小改变

  这里直接改变图片控件的transform属性

 - (IBAction)imageSizeChange:(UISlider *)sender
{
// transform 属性修改
_imageView.transform = CGAffineTransformMakeScale(sender.value, sender.value);
}

整个 SLQViewController.m文件如下:

 //
// SLQViewController.m
// 图片浏览器
//
// Created by Christian on 15/4/25.
// Copyright (c) 2015年 itcast. All rights reserved.
// #import "SLQViewController.h" @interface SLQViewController ()
{
NSArray *_array; // 保存文字描述信息
} @end @implementation SLQViewController - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. // 3、设置描述
// 如果要访问资源包中得所有资源,可以通过这个类访问,
NSBundle *bundle = [NSBundle mainBundle];
// 获取全路径
NSString *path = [bundle pathForResource:@"desc" ofType:@"plist"];
// 加载所有描述
_array= [NSArray arrayWithContentsOfFile:path];
_imageInfo.text = _array[]; // 设置默认显示描述
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} - (IBAction)sliderValueChanged:(UISlider *)slider
{
// 1、设置中间的图片
// 获得文件名 %.f 不保存任何小数
NSString *name = [NSString stringWithFormat:@"%.f.png",slider.value];
_imageView.image = [UIImage imageNamed:name];
// 2、设置显示第几张
_imageNum.text = [NSString stringWithFormat:@"%.f/16",slider.value + ];
// 3、设置描述
int index = (int)(slider.value + 0.5); // +0.5是为了消除强制转换的四舍五入所
_imageInfo.text = _array[index]; // NSLog(@"%d",index); }
- (IBAction)setting:(id)sender
{
// 动画开始
[UIView beginAnimations:nil context:nil];
// 设置动画时间
[UIView setAnimationDuration:0.5];
// 取出中点,现在是隐藏状态的中点
CGPoint center = _settingView.center; // 修改y值,如果要_settingView的y坐标值和整个主界面的高度相同,那么就没显示到主界面中
if (_settingView.frame.origin.y == self.view.frame.size.height) // 没出现就弹出
{
center.y -= _settingView.bounds.size.height; // _settingView的y值减去自身的高度,那么可将界面显示到主界面
}
else
{
center.y += _settingView.bounds.size.height; // 已经出现就隐藏
}
// 重新赋值
_settingView.center = center;
// 执行动画
[UIView commitAnimations];
} - (IBAction)imageSizeChange:(UISlider *)sender
{
// transform 属性修改
_imageView.transform = CGAffineTransformMakeScale(sender.value, sender.value);
} - (IBAction)nightModel:(UISwitch *)sender
{
if (!sender.on) // 如果开关关闭就显示白色
{
self.view.backgroundColor = [UIColor whiteColor]; // 关闭--背景显示白色 }
else // 否则显示灰色
self.view.backgroundColor = [UIColor darkGrayColor]; // 打开--背景显示灰色
} @end

整个过程大概就是这样,每天进步一点点。

IOS开发学习笔记020-练习总结的更多相关文章

  1. iOS开发学习笔记:基础篇

    iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...

  2. ios开发学习笔记(1)

    objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = ...

  3. iOS开发学习笔记

    1 常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Buil ...

  4. ios开发学习笔记(这里一定有你想要的东西,全部免费)

    1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view [ ...

  5. IOS开发学习笔记017-第一个IOS应用

    第一个IOS应用程序,就从最简单的开始吧. 1.先了解一下开发环境,Xcode的相关组成 2.还有模拟器 3.运行与停止按钮 4.新建一个工程 5.看看main函数里都有啥 6.现在来添加一个控件 1 ...

  6. (ios开发学习笔记一)ios项目文件结构

    转自:http://www.cnblogs.com/macroxu-1982/archive/2012/07/31/2616389.html 下面是单个窗体项目例子,我们从这个项目开始,说明ios项目 ...

  7. ios开发学习笔记040-autolayout 第三方框架Masonry

    不管是是界面创建约束还是代码创建约束,苹果官方提供的方式都比较繁琐.所以出现了第三方框架. Masonry 在github地址如下: https://github.com/SnapKit/Masonr ...

  8. IOS开发学习笔记026-UITableView的使用

    UITableView的简单使用过程 简单介绍 两种样式 UITableViewStylePlain UITableViewStyleGrouped 数据显示需要设置数据源,数据源是符合遵守协议 &l ...

  9. IOS开发学习笔记021-练习2

    只是简单练习一下,主要是学习里面的思想,处理问题的方法. 不过还有一个问题没想到解决方法. 那就是动态生成的按钮如何绑定按钮事件,请哪位大神指点一下啊.(知道怎么办了,原来是方法addTarget) ...

  10. IOS开发学习笔记016-Foundation框架

     Foundation 框架的学习 一.Foundation 常用结构体 1.NSRange(location,length)  typedef struct _NSRange { NSUIntege ...

随机推荐

  1. Android中intent相关,setFlag(xx);

    intent.setFlags(参数)://参数用法如下 :FLAG_ACTIVITY_CLEAR_TOP: 例如现在的栈情况为:A B C D .D此时通过intent跳转到B,如果这个intent ...

  2. Android 应用开机自启和无需权限开启悬浮框

    开机自启主要自定义广播接收类,且需要在清单文件中注册,不要在代码中动态注册. <uses-permission android:name="android.permission.REC ...

  3. ArcGIS中Features与JSON的互相转化

    实际操作过程非常简单,这里就简单记录下转换工具的位置:

  4. OpenCV之CvMat、Mat、IplImage之间相互转换实例(转)

    OpenCV学习之CvMat的用法详解及实例 CvMat是OpenCV比较基础的函数.初学者应该掌握并熟练应用.但是我认为计算机专业学习的方法是,不断的总结并且提炼,同时还要做大量的实践,如编码,才能 ...

  5. EF写统计

    EF的特性是,你from的第一个表为主表,接下来的所有表以左联或者内联或者交叉连接的方式去显示,不会出现右联, 在编写的时候,可以先确定个数据源,然后对这个数据源进行数据的统计, 例如SQL: -- ...

  6. Android(java)学习笔记74:ListViewProject案例(ListView + ArrayAdapter)

    1. 首先是MainActivity.java文件,如下: package com.himi.lv1; import java.util.ArrayList; import java.util.Lis ...

  7. 如何解决linux下apache启动时httpd: apr_sockaddr_info_get() failed for 报错

    今天在家里的RHLE5.5上安装apache的时候,先用user1用户./configure命令配置,然后才用root用户make && make install,结果apache起来 ...

  8. 制作带复选框的ListView控件

    实现效果: 知识运用   ListView控件的GridLines //设置是否在ListView控件中显示网格线 public bool GridLines{get;set} 和CheckBoxes ...

  9. 2018.5.25 Oracle相关的函数命令

    第03章 函数 1 Oracle的函数 Oracle的函数和java中的方法一样, 能完成一定的功能 2 字符处理类函数 --需求1:把ename字段转换成小写 select lower(ename) ...

  10. LuceneTest

    /** * Created by mhm on 2019/6/24. */@RunWith(SpringJUnit4ClassRunner.class)public class LuceneTest ...