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

浙公网安备 33010602011771号