博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
疯狂猜图(点击图片放大)
阅读量:5248 次
发布时间:2019-06-14

本文共 5351 字,大约阅读时间需要 17 分钟。

 
 

#import "ViewController.h"

#import "JWQuestion.h"

#import "NSArray+Log.h"

#define kMargin 13

 

@interfaceViewController ()

 

// 1/10

@property (weaknonatomicIBOutletUILabel *currenNumLabel;

 

//  喜剧大片

@property (weaknonatomicIBOutletUILabel *titleLabel;

 

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

@property (weaknonatomicIBOutletUIView *answerView;

 

@property (weaknonatomicIBOutletUIView *optionView;

 

 

@property (weaknonatomicIBOutletUIButton *iconBtn;

 

// 灰灰的遮盖

@property (strongnonatomicUIButton *cover;

 

 

@property (strongnonatomicNSArray * questionDatas;

 

 

@property(assignnonatomicint index;

 

@property (weaknonatomicIBOutletUIButton *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.iconforState: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:[UIColorblackColorforState: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区域第一个没有titlebtn

    

    

    

    // option隐藏把title赋值给answerBtntitle

    

    optionBtn.hidden = YES;

    

}

@end

 

 
 
 
 

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

你可能感兴趣的文章
DFS遍历整个连通的区域
查看>>
winform应用程序自动更新版本
查看>>
用到的几个Linux命令
查看>>
设计模式之代理模式
查看>>
HTTP/HTTPS, Socket,TCP/IP
查看>>
JAVA笔记整理(四),JAVA中的封装
查看>>
Oracle PL/SQL 程序设计读书笔记 - 第2章 创建并运行 PL/SQL代码
查看>>
java3
查看>>
javaadd
查看>>
Mysql数据库
查看>>
求两个字符串的最长公共子串(LCS)
查看>>
驱蚊器翁
查看>>
Java内部接口
查看>>
源码03-02-03-04-UIWindow
查看>>
对象和数组
查看>>
iframe自适应高度处理方案
查看>>
ln命令
查看>>
在 android studio 中更新安卓应用版本号
查看>>
ABAP 创建和调用WebService
查看>>
C# 实例化顺序
查看>>