疯狂猜图(点击图片放大)
#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
疯狂猜图(点击图片放大)相关推荐
- vue项目 一行js代码搞定点击图片放大缩小
一行js代码搞定xue项目需要点击图片放大缩小,其实主要用的是用到了vue:class的动态切换,内容比较简单.一开始我把维护的需求想得太复杂了,和测试小姐姐聊了一下才反应过来. 两个月不到跟了四个项 ...
- 点击图片放大至原始图片大小
有些时候为了排版的整洁,页面展示的图片不得不都是限定宽高的,如果想要点击图片放大至原始大小进行预览,再次点击回到原来样子,就要用到下面的代码了: var _w = parseInt($(window) ...
- 点击图片放大缩小功能
1.点击图片放大缩小的思路 图片部分: <table><div><img style="width:62px;height:83px;display:block ...
- jquery点击图片放大效果
点击图片放大效果无非就是创建一个大容器,点击小图片获取图片路径存放到大容器里. 接下来看一下效果图 HTML结构 <img class="enlargeImg" width= ...
- 百度移动优化:关于移动端点击图片放大有多少人注意?
百度移动搜索落地页体验白皮书4.0于2018年08月15日发布有多少人注意到白皮书最下面的这短短的60字? 好多网站都存在点击图片不可放大,有多少站长注意这个细节问题? 关于加这个功能确实挺麻烦,不懂 ...
- Android 点击图片放大至全屏 再次点击关闭过度动画 Shared Element效果(共享元素效果)
Android 点击图片放大至全屏 再次点击关闭过度动画 最近项目需要给用户一个体验优化,各种查阅,然后改了很多地方,类似于图片的点击预览,消息列表的点击流畅过渡. Shared Element效果( ...
- js实现点击图片放大效果,以及懒加载图片
js实现点击图片放大效果,以及懒加载图片 近期有个后端管理页面小优化,原来的图片是点击才会去后端请求图片展示到前端,用dialog的方式展示,但是不太直观 存在两个问题 1.点击查看后,电子照片会变形 ...
- jquery 点击图片放大,带上下一张,可通过滚动鼠标进行图片缩放
<?php /*** Created by PhpStorm.* User: 28010* Date: 2022/1/17* Time: 13:50*** 1.这里图片的数据是从数据库里面查询取 ...
- html手机端点击图片放大并根据手势缩放
手机端实现点击图片放大根据手势放大缩小 效果如下 进入页面 背景是白色的 点击图片后放大并居中背景变为黑色 效果如下 可以根据手势缩放 演示完毕,上代码 需要先引入一个js文件 网盘链接: https ...
- 初学者笔记——微信小程序点击图片放大
微信小程序点击图片放大 wx.previewImage 官方文档的解释 PS:红色框框内要注意,需要预览的图片连接列表只支持网络连接图片,2.2.3版本以上支持云文件ID. 将图片dream.jpg上 ...
最新文章
- oralce rollup 小计合计_总计与小计–WITH ROLLUP
- 生日快乐程序_亲爱的陕师大:75岁生日快乐!一起走过师大时光,在线生成你的师大印迹!...
- 政策解读:《智能硬件产业创新发展专项行动(2016-2018年)》(上)
- mybatis SqlMapConfig.xml typeAliases
- HTML5学习笔记简明版(11):新API
- 登录之回车登录和记住密码
- 《iOS9开发快速入门》——第2章,第2.1节Xcode 7.0的新特性
- centen os7 源码安装git2.17.0
- 本博客自排名300到264的各项数据变化
- 使用eclipse创建我的第一个JSP项目
- 西门子PLC 1200和V20变频器USS通讯
- android8 锁屏壁纸,小米8怎么设置锁屏壁纸?小米8锁屏壁纸三种设置教程
- 计算并返回 x 的 算术平方根
- WPF中资源字典引用出错
- 亿图图示,获取图标的好软件
- 构造方法:构造方法的格式和执行时机;构造方法的作用;构造方法的注意事项;
- 【Python】文件操作(单文件操作)
- 【安卓实验】实验五、广播实验
- 嵌入式开发板硬件操作入门学习9——集成电路芯片手册术语词汇表(中英文对照)
- 打造完美用户体验:“天翼平台开放日”沙龙纪实(转载)
热门文章
- show master status为空值
- 怎么通过WSDL命令,将WSDL生成代理类
- EA-IRMS操作(以MAT253 plus为例)
- Educoder/头歌JAVA——HTML:表单类的标签
- [杂谈] 看 《我是特种兵1》后对挫折教育的杂谈
- Ubuntu 20.04 LTS安装教程
- linux内核2.6.3x--General setup 常规设置
- 重庆市第九届大学生程序设计大赛Day1.题D代码
- Python实现和电脑猜拳的小游戏源代码
- 使用adb命令冻结/解冻安卓后台进程