超级猜图

it2022-05-12  53

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,将做好的图片添加进去即可。

转载于:https://www.cnblogs.com/yangqinglong/p/5520069.html

相关资源:超级猜图资源及源码

最新回复(0)