zoukankan      html  css  js  c++  java
  • 超级猜图

    1,模型封装,读取plist数据,并且封装成模型

    -(NSArray *)questions{
        if (_questions == nil) {
            NSString *path = [[NSBundle mainBundle] pathForResource:@"questions.plist" ofType:nil];
            NSArray *arrayDict = [NSArray arrayWithContentsOfFile:path];
            NSMutableArray *arrayModel = [NSMutableArray array];
            //遍历
            for (NSDictionary *dict  in arrayDict) {
                YQLQuestion *model = [YQLQuestion questionWithDict:dict];
                [arrayModel addObject:model];
            }
            _questions = arrayModel;
        }
        return  _questions;
    }
    

     2,判断当前btn上的标题,是否已经满了,满了的话,界面不接收点击事件

    -(void)optionButtonDidClicked:(UIButton *)sender{
        //隐藏当前被点击的按钮
        sender.hidden = YES;
        //把当前被点击的文字显示到答案按钮上
        NSString *text = sender.currentTitle;
        //吧文字显示到答案按钮上
        for (UIButton *answerBtn  in self.answerView.subviews) {
            //判断每个答案按钮上的答案文字
            if (answerBtn.currentTitle == nil) {
                [answerBtn setTitle:text forState:UIControlStateNormal];
                break;
            }
        }
        BOOL isFull = YES;
        for (UIButton *btnAnswer in self.answerView.subviews) {
            if (btnAnswer.currentTitle == nil) {
                isFull = NO;
                break;
            }
        }
        //判断答案按钮是否已经满了
        if (isFull) {
            //禁止待选按钮被点击
            self.optionsView.userInteractionEnabled = NO;
        }
    }
    

     3,设置禁用下一题按钮

    //设置到达最后一题禁用下一题按钮
        self.btnNext.enabled = (self.index!= self.questions.count-1);
    

     4,清除所有按钮

    //创建前先清除之前的按钮

        //    while (self.answerView.subviews.firstObject) {

        //        [self.answerView.subviews.firstObject removeFromSuperview];

        //    }或者用下面的方法,让数组中的每一个子对象分别调用这个方法,内部循环,无需我们自己来循环

        [self.answerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

     5,获取按钮上当前按钮的文字

     //把当前被点击的文字显示到答案按钮上
    //    NSString *text = [sender titleForState:UIControlStateNormal];
        NSString *text = sender.currentTitle;
    

     6.每个model封装技巧

    @interface YQLQuestion : NSObject
    @property (nonatomic,copy) NSString *answer;
    @property (nonatomic,copy) NSString *icon;
    @property (nonatomic,copy) NSString *title;
    @property (nonatomic,strong) NSArray *options;
    
    
    -(instancetype)initWithDict:(NSDictionary *)Dict;
    +(instancetype)questionWithDict:(NSDictionary *)Dict;
    
    -(instancetype)initWithDict:(NSDictionary *)Dict{
        if (self = [super init]) {
            self.answer = Dict[@"answer"];
            self.icon = Dict[@"icon"];
            self.title = Dict[@"title"];
            self.options = Dict[@"options"];
        }
        return self;
    }
    
    +(instancetype)questionWithDict:(NSDictionary *)Dict{
        return  [[self alloc]initWithDict:Dict];
    }
    

    如果封装的模型里面的key与传进来的字典的key值相同,那么可以用KVC实现

    [self setValueForKeysWithDictionary:dict]; 

    7,修改启动图

    1-直接在LaunchScreen.xib里面设置,这种是系统将xib里面的图片截图,设置成启动图。

    2-工程设置里,选中项目,App Icons and Launch Images ,选中Launch images Souce ,点击Use Asset Catalog,点击Migrate,把Launch ScreenFiles删掉,在Images.xcassets里面就有了LunchImage,将做好的图片添加进去即可。

  • 相关阅读:
    day 29-2 socket 文件传输、udp协议
    day 29-1 socket
    day 28-1 元类、异常处理
    day 27-1 反射、内置方法
    day 26-1 property、绑定与非绑定方法
    day 25-1 接口类、抽象类、多态
    day 24-1 继承
    day 23-1 类的命名空间、组合
    day 22
    PyMySQL操作mysql数据库(py3必学)
  • 原文地址:https://www.cnblogs.com/yangqinglong/p/5520069.html
Copyright © 2011-2022 走看看