关情纸尾-----IOS学习之超级猜图

超级猜图

1>重点界面可变元素

  • 索引、描述以及图片会随着点击下一题按钮自动更换对应的内容
  • 点击放大按钮或者图片本身可以放大图片,且图片放大后,有一层半透明的遮盖处在图片后面,遮盖住屏幕上的的其他内容点击遮盖或者其图片可以将图片恢复大小,并且遮盖消失。
  • 每次点击下一题按钮,下方的答案框数答案文字选项也随之改变。
  • 点击下方候选答案按钮,此按钮隐身并且按顺序显示到上方的答案框中。
  • 自动判断答案是否填满,填满后检测是否正确,正确显示蓝色,并自动跳到下一题同时加分;错误显示红色。
  • 点击提示按钮,显示正确答案的第一个文字,并且扣分。

2>部分新知识点

1.KVC键值对编码

 1 - (instancetype) initWithDict:(NSDictionary *)Dict{
 2     //** 对模型进行赋值 */
 3     if (self = [super init]) {
 4         [self setValuesForKeysWithDictionary:Dict];
 5     }
 6     return self;
 7 }
 8 其中setValuesForKeysWithDictionary:方法可以批量将字典中的元素赋值到对应名称的self成员变量中,字典中有几个键值对,就可以有几个与key相同的成员变量,要求字典键值名称必须与模型成员名称相同,便可自动复制。字典中的键值对可不全部显示出来。
 9
10
11
12 //KVC还可以查找路径
13
14  NSArray *array = [ persons valueForKeyPath: @“name”]
15
16 KVC按照路径取值时,如果对象不包含指定对象时,会自动进入对象内部,查找对象属性。

2.懒加载固定模式

 1 - (NSArray *)questions
 2 {
 3     if (_questions == nil) {
 4         // 1.加载plist
 5         NSArray *tempArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"questions" ofType:@"plist"]];
 6
 7         // 2.创建模型数组
 8         NSMutableArray *arrayM = [NSMutableArray array];
 9         for (NSDictionary *dict in tempArray) {
10             [arrayM addObject:[HZHquestions questionWithDict:dict]];
11         }
12     _questions = arrayM;
13     }
14     return _questions;
15 }
16
17 先判断为空,再加载plist文件,使用for循环创建模型数组,将模型数组保存到成员变量数组中。

3.设置状态栏显示

 1 // 设置状态栏高亮显示
 2 - (UIStatusBarStyle)preferredStatusBarStyle{
 3     return UIStatusBarStyleLightContent;
 4 }
 5 // 设置状态栏常规显示
 6 - (UIStatusBarStyle)preferredStatusBarStyle{
 7     return UIStatusBarStyleDefault;
 8 }
 9 // 设置状态栏可见性
10 - (BOOL)prefersStatusBarHidden{
11
12     return YES;
13 }                                                                                                                            

状态栏默认是显示黑色

高亮状态显示白色

4.将图片对象移到遮盖对象的前面

1 [self.view bringSubviewToFront:self.pictureView]

5.将控件设为隐藏

1 option.hidden = YES;

6.取出控件的title

1  NSString *temp = [btn titleForState:UIControlStateNormal];

7.启动画面及APP图标

只要文件名为 “Icon.png”,就会被设置为APP图标。

一个app在启动过程中会全屏显示叫做Default.png的图片。

不用规格Default的使用场合

  1. Default.png:非retina-iPhone屏幕,320x480
  2. [email protected]:retina-iPhone屏幕,640x960
  3. [email protected]:4inch的retina-iPhone屏幕,640x1136
  4. Default-Portrait~ipad.png:非retain-iPad竖屏屏幕,768x1024
  5. [email protected]:retain-iPad竖屏屏幕,1536x2048
  6. Default-Landscape~ipad.png:非retain-iPad横屏屏幕,1024x768
  7. [email protected]:retain-iPad横屏屏幕,2048x1536

8.设置内边距制造相框效果

使用白色的图片作为背景图片,然后设置图片的边距Insert。即得到如右图的效果。

               

9.大图时的动画

创建一个按钮,背景色黑色,设置其透明度alpha。

用block代替头尾式动画,效率高。

 1 [UIView animateWithDuration:2.0 animations:^{
 2        //存放需要执行的动画
 3          cover.alpha = 0.6;
 4
 5          CGFloat headW = self.view.frame.size.width;
 6          CGFloat headH = headW;
 7          CGFloat headX = 0;
 8          CGFloat headY = 0.5 * (self.view.frame.size.height- headH);
 9          self.head.frame = CGRectMake(headX, headY, headW, headH);
10
11      }];

10.点击选项按钮

(1)被点击的选项按钮消失(hidden = YES)

(2)将选中选项的文字放到答案区的按钮上

(3)把文字放到第一个没有文字的答案按钮上

(4)点击有文字的答案按钮,文字恢复到选项

(5)答案填满后,阻止事件触发

♥ 以上是我觉得这个小案例里面主要的一些新知识,小小的做个笔记♥

时间: 2024-10-28 15:38:31

关情纸尾-----IOS学习之超级猜图的相关文章

关情纸尾-----IOS学习之UITableView

一.基本介绍 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UITableView继承自UIScrollView,因此支持垂直滚动,?且性能极佳 . UITableView有两种风格:UITableViewStylePlain和UITableViewStyleGrouped.这两者操作起来其实并没有本质区别,只是后者按分组样式显示,前者按照普通样式显示而已.先看一下两者的应用: 二.UItableview展示数据的过程 ♥ UITableView需要一个数据源(da

关情纸尾-----IOS学习之UIScrollView

一.UIScrolllView控件的简单介绍 1.什么是UIScrollView (1)移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限 (2)当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容 (3)普通的UIView不具备滚动功能,不能显示过多的内容 (4)UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容 (5)举例:手机上的“设置”.其他示例程序 2.UIScrollView的简单使用方法

关情纸尾-----关于最近学习iOS开发的一些总结(一)

最近学习做一些小项目的的思路,也了解和掌握了一些新的知识.越深入的学,越觉得学编程不容易,那些大神,真心让我佩服. 一.UIButton 有三种状态 normal(普通状态) 默认情况 对应的枚举常量:UIControlStateNormal highlighted(高亮状态) 按钮被按下去的时候(手指还未松开) 对应的枚举常量:UIControlStateHighlighted disabled(失效状态,不可用状态) 如果enabled属性为NO,就是处于disable状态,代表按钮不可以被

关情纸尾-----Quartz2D简介

1.什么是Quartz2D? 他是一个二维的绘图引擎,同时支持iOS和Mac系统 2.Quartz2D能完成的工作? 画基本线条,绘制文字,图片,截图,自定义UIView. 3.Quartz2D在开发中的价值? 当我们的控件样式极其复杂时,可以把控件内部的结构给画出画,就是自定义控件. 4.什么是图形上下文,上下文的类型有哪些? 图形上下文是用来保存用户绘制的内容状态,并决定绘制到哪个地方的. 用户把绘制好的内容先保存到图形上下文, 然后根据选择的图形上下文的不同,绘制的内容显示到地方也不相同,

关情纸尾-----Quartz2D定时器CADisplayLink下雪效果

定时器CADisplayLink下雪效果 1.定时器雪花整体思路: 先在控制器View面绘制一个雪花. 在View加载完毕后,添加一个定时器. 在定时器方法当中调用得绘方法. 在绘图方法当不段的去修改雪花的Y值. 当雪花的Y值超过屏幕的高度时,让雪花的Y值重新设为0.从最顶部开始. 2.添加定时器实现方案 第一种采用NSTime 第二种采用CADisplayLink 最终采用CADisplayLink方案. 2.1为什么采用CADisplayLink方案不用NSTime? 首先要了解setNee

关情纸尾-----Quartz2D绘制下载进度条,饼图

绘制下载进度条 1.搭建界面. 2.拖动滑竿的时候让他里面的能够跟着我的拖动,数字在改变. 数字改变时有一个注意点, 就是要显示%,它是一个特殊的符号,要用两个%%代表一个% 3.拖动滑竿的时候就是在上面画弧. 从最上面,按顺时针画,所以,它的起始角度是-90度.结束角度也是-90度 也是从起始角度开始画, 起始角度-90度, 看你下载进度是多少 假如说你下载进度是100,就是1 * 360度 也就是说这个进度占你360度多少分之一 CGContextRef ctx = UIGraphicsGe

关情纸尾-----面向对象的三大特性

面向对象的三大特性 .封装 .继承 .多态 一.封装 1.set方法 (1)作用:提供一个方法给外界设置成员变量,可以在方法里面对参数进行过滤 (2)命名规范: 方法都是以set开头,而且后面要跟上成员变量名,成员变量名的首字母必须是大写 (3)形参名称不要和成员变量同名 (4)返回值一定是void (5)一定要接收一个参数,而且参数类型和成员变量类型一致 2.get方法 (1)作用:返回内部的成员变量 (2)命名规范:方法的名称一般就跟成员变量同名 (3)一定有返回值,并且返回值类型和成员变量

关情纸尾-----Quartz2D-图片添加水印

给图片水印的目的: 告诉别人图片的来源. 防止别人盗用图片.打广告. 添加水印它最终是生成了一个新的图片. 生成图片要用到了图片上下文.不需要再去自定义View, 之前一直在自定义View,是因为要拿跟View相关联的上下文. 跟View相关联的上下文是系统自动帮我们创建的,所以不需要我们自己手动创建, 但是图片上下文需要我们自己去手动创建.还需要我们自己手动去关闭. 实现水印效果的思路: 开启一个和原始图片一样的图片上下文. 把原始图片先绘制到图片上下文. 再把要添加的水印(文字,logo)等

关情纸尾-----Quartz2D模仿系统的UIImageView

模仿系统的UIImageView 整体思路: 我们想要模仿系统的UIImageView,我们必须得要知道系统的UIView怎么用. 第一种用法 系统的用法是创建一个UIImageView对象,设置frame,给它传递一个UIImage,再把它添加到一个View上面就可以了. 可以切换图片. 第二种用法就是在创建的时候直接传递一个UIImage对象,使用initWithImage的方法进行创建一个UImageView的方式 用这种做法创建出来的UIImageView它的尺寸大小和原始图片的尺寸大小