#import "ViewController.h"

#import "JWQuestion.h"

#import "NSArray+Log.h"

#define kMargin 13

@interfaceViewController ()

// 1/10

@property (weak, nonatomic) IBOutletUILabel *currenNumLabel;

//  喜剧大片

@property (weak, nonatomic) IBOutletUILabel *titleLabel;

// 专门管理答案区域的Button

@property (weak, nonatomic) IBOutletUIView *answerView;

@property (weak, nonatomic) IBOutletUIView *optionView;

@property (weak, nonatomic) IBOutletUIButton *iconBtn;

// 灰灰的遮盖

@property (strong, nonatomic) UIButton *cover;

@property (strong, nonatomic) NSArray * questionDatas;

@property(assign, nonatomic) int index;

@property (weak, nonatomic) IBOutletUIButton *nextQuestionBtn;

@end

@implementation ViewController

-(NSArray *)questionDatas

{

if (!_questionDatas) {

//        NSArray *allDatas = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"questions" ofType:@"plist"]];

//

//        NSMutableArray *tempArr = [NSMutableArray array];

//

//        for (NSDictionary *dict in allDatas) {

//

//            JWQuestion *question = [JWQuestion questionWithDict:dict];

//            [tempArr addObject:question];

//        }

//

// 放JWQuestion对象

_questionDatas = [JWQuestionquestion];

}

return_questionDatas;

}

-(UIButton *)cover

{

if (!_cover) {

// 创建一个半透明的Button

_cover = [[UIButtonalloc]initWithFrame:self.view.bounds];

_cover.backgroundColor = [UIColorblackColor];

_cover.alpha = 0.0;

[_coveraddTarget:selfaction:@selector(bigImage:) forControlEvents:UIControlEventTouchUpInside];

[self.viewaddSubview:_cover];

self.cover = _cover;

}

return_cover;

}

- (void)viewDidLoad {

[superviewDidLoad];

self.index--;

// 进来就加载数据

[selfnextQuestion:nil];

}

// 点击“大图”

- (IBAction)bigImage:(id)sender {

//创建半透明的Button

[selfcover];

// 图片放到最上层

[self.viewbringSubviewToFront:self.iconBtn];

// 计算图片改变后的大小

CGFloat iconBtnW = self.view.bounds.size.width;

CGFloat iconBtnH = iconBtnW;

CGFloat iconBtnY = (self.view.bounds.size.height - iconBtnW) * 0.5;

// 判断现在是不是大图是大图就变小

if (0.0 == self.cover.alpha) {   // 小图

// 动画放大

[UIViewanimateWithDuration:1.0 animations:^{

self.cover.alpha = 0.5;

self.iconBtn.frame = CGRectMake(0, iconBtnY, iconBtnW, iconBtnH);

}];

}

else    // 已经是大图

{

[UIViewanimateWithDuration:1.0 animations:^{

self.iconBtn.frame = CGRectMake(107 , 108, 160, 160);

// alpha < 0.001的时候,不响应事件

self.cover.alpha = 0.0;

}];

}

}

// 点击“下一题”

- (IBAction)nextQuestion:(UIButton *)sender {

self.index ++;

// 取出数据

JWQuestion *question = self.questionDatas[self.index];

// 专门切换所有数据

[selfchangeData:question];

// 创建answer区域的按钮之前清空上次创建的按钮

[selfcreatAnswerBtnWithQuestion:question];

// 创建option区域的按钮

[selfcreatOptionBtnWithQuestion:question];

}

// 专门切换所有数据

-(void)changeData:(JWQuestion *)question

{

self.currenNumLabel.text = [NSStringstringWithFormat:@"%d/%ld",self.index + 1,self.questionDatas.count];

self.titleLabel.text = question.title;

[self.iconBtnsetImage:[UIImageimageNamed:question.icon] forState:UIControlStateNormal];

// 3> 不能点击

self.nextQuestionBtn.enabled = self.index != self.questionDatas.count-1;

}

// 创建answer区域的按钮之前清空上次创建的按钮

-(void)creatAnswerBtnWithQuestion:(JWQuestion *)question

{

for (UIButton *answerBtn inself.answerView.subviews) {

[answerBtn removeFromSuperview];

}

// 拿出答案

NSUInteger answerbtnCount = question.answer.length;

CGFloat answerBtnW = 35;

CGFloat answerBtnH = answerBtnW;

// 不论几个按钮,都在屏幕中间;左边和右边间距一样

CGFloat answerBtnStartX = (self.view.bounds.size.width - answerbtnCount * answerBtnW - (answerbtnCount - 1) * kMargin) * 0.5;

for (int i = 0 ; i < answerbtnCount; i ++) {

CGFloat answerBtnX = answerBtnStartX + (answerBtnW + kMargin) * i;

UIButton *answerBtn = [[UIButtonalloc]initWithFrame:CGRectMake(answerBtnX, 0, answerBtnW, answerBtnH)];

[answerBtn setBackgroundImage:[UIImageimageNamed:@"btn_answer"] forState:UIControlStateNormal];

[answerBtn setBackgroundImage:[UIImageimageNamed:@"btn_answer_highlighted"] forState:UIControlStateHighlighted];

[self.answerViewaddSubview:answerBtn];

}

}

// 创建option区域的按钮

-(void)creatOptionBtnWithQuestion:(JWQuestion *)question

{

// 个数== options数组的count   左边和右边间距一样

for (UIButton *optionBtn inself.optionView.subviews) {

[optionBtn removeFromSuperview];

}

NSUInteger optionBtnCount = question.options.count;

CGFloat optionBtnW = 40;

CGFloat optionBtnH = optionBtnW;

int totolCol = 7;

CGFloat optionBtnStartX = (self.view.bounds.size.width - totolCol *optionBtnW - (totolCol - 1) *kMargin) * 0.5;

for (int i = 0 ; i < optionBtnCount; i ++) {

int row = i / totolCol;

int col = i % totolCol;

CGFloat optionBtnX = optionBtnStartX + (optionBtnW + kMargin) *col;

CGFloat optionBtnY = (optionBtnH + kMargin) * row;

UIButton *optionBtn = [[UIButtonalloc]initWithFrame:CGRectMake(optionBtnX,optionBtnY , optionBtnW, optionBtnH)];

[optionBtn setTitle:question.options[i] forState:UIControlStateNormal];

[optionBtn setTitleColor:[UIColorblackColor] forState:UIControlStateNormal];

[optionBtn setBackgroundImage:[UIImageimageNamed:@"btn_option"] forState:UIControlStateNormal];

[optionBtn setBackgroundImage:[UIImageimageNamed:@"btn_option_highlighted"] forState:UIControlStateHighlighted];

[optionBtn addTarget:selfaction:@selector(optionBtnClick:) forControlEvents:UIControlEventTouchUpInside];

[self.optionViewaddSubview:optionBtn];

}

}

#warning 讲到这里了-----------

-(void)optionBtnClick:(UIButton *)optionBtn

{

// 找到answer区域第一个没有title的btn

// 把option隐藏把title赋值给answerBtn的title

optionBtn.hidden = YES;

}

@end

转载于:https://www.cnblogs.com/GhostKZShadow/p/5108773.html

疯狂猜图(点击图片放大)相关推荐

  1. vue项目 一行js代码搞定点击图片放大缩小

    一行js代码搞定xue项目需要点击图片放大缩小,其实主要用的是用到了vue:class的动态切换,内容比较简单.一开始我把维护的需求想得太复杂了,和测试小姐姐聊了一下才反应过来. 两个月不到跟了四个项 ...

  2. 点击图片放大至原始图片大小

    有些时候为了排版的整洁,页面展示的图片不得不都是限定宽高的,如果想要点击图片放大至原始大小进行预览,再次点击回到原来样子,就要用到下面的代码了: var _w = parseInt($(window) ...

  3. 点击图片放大缩小功能

    1.点击图片放大缩小的思路 图片部分: <table><div><img style="width:62px;height:83px;display:block ...

  4. jquery点击图片放大效果

    点击图片放大效果无非就是创建一个大容器,点击小图片获取图片路径存放到大容器里. 接下来看一下效果图 HTML结构 <img class="enlargeImg" width= ...

  5. 百度移动优化:关于移动端点击图片放大有多少人注意?

    百度移动搜索落地页体验白皮书4.0于2018年08月15日发布有多少人注意到白皮书最下面的这短短的60字? 好多网站都存在点击图片不可放大,有多少站长注意这个细节问题? 关于加这个功能确实挺麻烦,不懂 ...

  6. Android 点击图片放大至全屏 再次点击关闭过度动画 Shared Element效果(共享元素效果)

    Android 点击图片放大至全屏 再次点击关闭过度动画 最近项目需要给用户一个体验优化,各种查阅,然后改了很多地方,类似于图片的点击预览,消息列表的点击流畅过渡. Shared Element效果( ...

  7. js实现点击图片放大效果,以及懒加载图片

    js实现点击图片放大效果,以及懒加载图片 近期有个后端管理页面小优化,原来的图片是点击才会去后端请求图片展示到前端,用dialog的方式展示,但是不太直观 存在两个问题 1.点击查看后,电子照片会变形 ...

  8. jquery 点击图片放大,带上下一张,可通过滚动鼠标进行图片缩放

    <?php /*** Created by PhpStorm.* User: 28010* Date: 2022/1/17* Time: 13:50*** 1.这里图片的数据是从数据库里面查询取 ...

  9. html手机端点击图片放大并根据手势缩放

    手机端实现点击图片放大根据手势放大缩小 效果如下 进入页面 背景是白色的 点击图片后放大并居中背景变为黑色 效果如下 可以根据手势缩放 演示完毕,上代码 需要先引入一个js文件 网盘链接: https ...

  10. 初学者笔记——微信小程序点击图片放大

    微信小程序点击图片放大 wx.previewImage 官方文档的解释 PS:红色框框内要注意,需要预览的图片连接列表只支持网络连接图片,2.2.3版本以上支持云文件ID. 将图片dream.jpg上 ...

最新文章

  1. oralce rollup 小计合计_总计与小计–WITH ROLLUP
  2. 生日快乐程序_亲爱的陕师大:75岁生日快乐!一起走过师大时光,在线生成你的师大印迹!...
  3. 政策解读:《智能硬件产业创新发展专项行动(2016-2018年)》(上)
  4. mybatis SqlMapConfig.xml typeAliases
  5. HTML5学习笔记简明版(11):新API
  6. 登录之回车登录和记住密码
  7. 《iOS9开发快速入门》——第2章,第2.1节Xcode 7.0的新特性
  8. centen os7 源码安装git2.17.0
  9. 本博客自排名300到264的各项数据变化
  10. 使用eclipse创建我的第一个JSP项目
  11. 西门子PLC 1200和V20变频器USS通讯
  12. android8 锁屏壁纸,小米8怎么设置锁屏壁纸?小米8锁屏壁纸三种设置教程
  13. 计算并返回 x 的 算术平方根
  14. WPF中资源字典引用出错
  15. 亿图图示,获取图标的好软件
  16. 构造方法:构造方法的格式和执行时机;构造方法的作用;构造方法的注意事项;
  17. 【Python】文件操作(单文件操作)
  18. 【安卓实验】实验五、广播实验
  19. 嵌入式开发板硬件操作入门学习9——集成电路芯片手册术语词汇表(中英文对照)
  20. 打造完美用户体验:“天翼平台开放日”沙龙纪实(转载)

热门文章

  1. show master status为空值
  2. 怎么通过WSDL命令,将WSDL生成代理类
  3. EA-IRMS操作(以MAT253 plus为例)
  4. Educoder/头歌JAVA——HTML:表单类的标签
  5. [杂谈] 看 《我是特种兵1》后对挫折教育的杂谈
  6. Ubuntu 20.04 LTS安装教程
  7. linux内核2.6.3x--General setup 常规设置
  8. 重庆市第九届大学生程序设计大赛Day1.题D代码
  9. Python实现和电脑猜拳的小游戏源代码
  10. 使用adb命令冻结/解冻安卓后台进程