項目練手:看圖猜詞

項目:看圖猜詞

項目地址: https://github.com/FFFFFFMILK/GuessPicture/tree/master
項目來源:ITcast 初級教程 UI 基礎(chǔ)

需求分析:

  1. UI 顯示
  2. 數(shù)據(jù)載入
  3. 猜詞邏輯

UI 顯示

  1. 信息顯示區(qū)域
    四個按鈕:提示、大圖、幫助、下一題
    三個Label:第幾題、題目描述、金幣數(shù)量
    一張圖
  2. 答案區(qū)域
    根據(jù)答案字?jǐn)?shù)顯示幾個空白 view
  3. 選項區(qū)域
    3 x 7 個選項

數(shù)據(jù)載入

從 plist 載入數(shù)據(jù)

猜詞邏輯

  1. 點擊選項區(qū)域:
    選項區(qū)域按鈕消失
    答案區(qū)域第一個為空的按鈕顯示已選答案字
  2. 點擊已填答案區(qū)域:
    清空字
    字回到選項區(qū)域
  3. 輸入完成,判斷正確與否:
    錯誤:字變紅,可以繼續(xù)做題,減 1000 金幣
    正確:禁用選項區(qū)域,1s 后切換下一題,加 100 金幣
  4. 提示按鈕:
    點擊后,清空答案區(qū)域,現(xiàn)實答案第一個字
    減 100 金幣
  5. 大圖按鈕:
    點擊后,出現(xiàn)半透明灰色遮罩,同時放大圖片
  6. 下一題按鈕:
    切換數(shù)據(jù)
    當(dāng)沒有下一題,需要禁用按鈕

時長用時:一個頁面,有一定的邏輯判斷,4h左右

tip:
左縮進(jìn):command + [
右縮進(jìn):command + ]

代碼知識點

  1. 懶加載:存儲數(shù)據(jù)的數(shù)組,當(dāng)數(shù)據(jù)為空時,才從 plist 讀取數(shù)據(jù),否則直接返回數(shù)組

  2. 給 UIImageView 添加點擊事件:添加手勢消息

     [_image addGestureRecognizer:[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clickImg)]];
    
  3. 如果禁用了父 View 的交互,子View 也無法進(jìn)行交互:userInteractionEnabled

  4. 使用 block 進(jìn)行迭代:enumerateObjectsUsingBlock

  5. button 的當(dāng)前 title:btn.currentTitle

  6. 警告框:UIAlertController 的用法

     UIAlertController *alertCtrl = [UIAlertController alertControllerWithTitle:@"沒錢啦" message:@"去充錢吧" preferredStyle:UIAlertControllerStyleAlert];
     [alertCtrl addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
     [alertCtrl addAction:[UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:nil]];
     [self presentViewController:alertCtrl animated:YES completion:nil];
    
  7. 使用 transform 進(jìn)行縮放變形動畫:

     CGFloat delta = show ? 0.6 : 0;
     CGAffineTransform transform = show ? CGAffineTransformMakeScale(1.5, 1.5) : CGAffineTransformIdentity;
    
     [UIView animateWithDuration:0.5 animations:^{
         _coverView.alpha = delta;
         _image.transform = transform;
     }];
    
  8. 九宮格布局的坐標(biāo)計算:i % column 和 i / column

  9. 從 plist 中讀取數(shù)據(jù)
    // 從 plist 文件中讀取數(shù)據(jù)
    NSArray *arr = [NSArray arrayWithContentsOfFile:[NSBundle mainBundle pathForResource:@"questions.plist" ofType:nil]];

     // 把數(shù)組中的字典轉(zhuǎn)化為自定義的數(shù)據(jù)模型
     for (NSDictionary *dic in arr) {
         [_dataArray addObject:[OptionModel optionModelWithDict:dic]];
     }
    
  10. 利用 kvc 將字典賦值給自定義數(shù)據(jù)模型:setValuesForKeysWithDictionary

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概述 摘要:用UIKit制作一款游戲,學(xué)習(xí)整型變量、按鈕、顏色和動作。 概念:@2x和@3x圖像,資源目錄,整型變...
    lbhw閱讀 684評論 0 0
  • 繪制創(chuàng)意: 步驟講解: 自由創(chuàng)意: 伙伴互助: 親子共繪: 作品展示: 怪誕思維: 畫出夢想: 心中樂園: 共聚家...
    智悲德育閱讀 518評論 0 0
  • 采一把月光 任它在指尖徜徉, 輕輕波動琴弦, 隨音符流淌 繾綣的情懷, 跳動著思念的心傷。 采一把月光, 一半給你...
    秋風(fēng)雨林閱讀 255評論 0 3
  • 課前思考:為什么總覺得精力不足? ?? 我這個人很難把控住做一件事情的度,要么全心投入,要么放棄全部,這些從我...
    雪之沙閱讀 346評論 0 2
  • 我的回憶之母,情人中的情人, 我全部的快樂,我全部的敬意! 你呀, 你可曾記得撫愛之溫存, 那爐邊的溫馨,那...
    李_昀倩閱讀 218評論 1 3

友情鏈接更多精彩內(nèi)容