一個普通 iOS 碼農的幾個小項目相關知識點總結

来源:http://www.cnblogs.com/howie-ch/archive/2017/02/03/6362251.html
-Advertisement-
Play Games

題記:在開發的路途上,有的人走的很深很遠,而對於停留在初級階段的我來說,還要學的、經歷的還有很多... ...


題記:在開發的路途上,有的人走的很深很遠,而對於停留在初級階段的我來說,還要學的、經歷的還有很多...

list

  • sqlite 資料庫中,當把表裡的數據都清空時,下次插入的數據的 id 主鍵不會從 0 開始。保險起見 下次從資料庫獲取數據時先獲取第一個的 id 主鍵,不知道還有沒有其他簡單的方法
  • 如果設置了 tableView 的上邊距再使用 MJRefresh時,刷新控制項會錯位,可使用忽略 tableView等的內邊距方法,該方法在類:MJRefreshHeader 里,方法名 ignoredScrollViewContentInsetTop
  • 填寫表單型的 tableView,用到了 textField 要註意需要顯示的是 textField.text 還是 textField.placeholder,註意 cell 迴圈引用。 需要寫多種類似的表格時,UI 界面就一套,用本地不同的 plist 數據去控製表格,給數據很多屬性來區分:增加正則判斷數值,增加樣式...
  • kvc 修改已有類的私有屬性是可以的,使用蘋果未暴露的類的私有屬性和方法是不允許的
  • 一個頁面多次非同步請求數據(使用 AFN),但需要在最後一次請求數據的時候才刷新 UI
    • 非同步請求嵌套,在一次非同步請求成功或失敗的回調里進行下一次請求,適合於兩次請求有明顯的先後關係時
    • 用一個變數做標記,在每一次請求成功的回調里 需要寫以下兩個方面的代碼:①將變數加個1,②如果變數等於請求的個數就執行請求完成、刷新UI的方法 ,當然請求失敗也需要這樣處理
    • 其他方法...?
  • 謂詞 NSPredicate 的使用
    •  NSArray *tmpArray = [self.zhiBiaoArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"month == '%@'", month]]];
    • NSString *regex = @"^[0-9]*$";
      NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self matches %@",regex];
      return [predicate evaluateWithObject:text];
  • 根據數據中的對象的屬性排序

    tmpArray = [tmpArray sortedArrayUsingComparator:^NSComparisonResult(SuiFangItem *obj1, SuiFangItem *obj2) {
    return [obj1.SUBDATE compare:obj2.SUBDATE] == NSOrderedAscending;}];
  • 經典代碼,標簽 for 迴圈排序設置標簽的 xy

     for (NSInteger i = 0; i < tagBtnArray.count; i ++) {
       UIButton *tagBtn = tagBtnArray[i];
       if (i == 0) {
         tagBtn.fd_x = 0;
         tagBtn.fd_y = 0;
         } else {
           UIButton *previousBtn = tagBtnArray[i -1];
           tagBtn.fd_x = CGRectGetMaxX(previousBtn.frame) + 10;
           tagBtn.fd_y = previousBtn.fd_y;
           if ((tagViewW - tagBtn.fd_x) < tagBtn.fd_width) {tagBtn.fd_x = 0;
    tagBtn.fd_y = CGRectGetMaxY(previousBtn.frame) + 10;
           }
      }
     }
  • 解析 xml 值格式 的數據,xml 屬性格式 的可使用系統的
    • 使用 XMLDictionary 將 xml 轉成字典,再解析
  • 伺服器返回一堆帶有月份的數據,伺服器並未做按月分組,本地實現按月分組

    // 獲得數據中存在的月份,共有哪幾個月份
    NSMutableArray *monthArray = [NSMutableArray array];
    ZhiBiaoItem *firstItem = self.zhiBiaoArray[0];
    [monthArray addObject:firstItem.month];
    
    for (NSInteger i = 1; i < self.zhiBiaoArray.count; i ++) {
        ZhiBiaoItem *item = self.zhiBiaoArray[i];
        if (![item.month isEqualToString:firstItem.month]) {
            if ([monthArray containsObject:item.month]) {
                continue;
            }
            [monthArray addObject:item.month];
        }
    }
    
    self.monthArray = monthArray;
    
    // 根據月份進行分組
    NSMutableDictionary *resultDict = [NSMutableDictionary dictionary];
    for (NSString *month in monthArray) {
        NSArray *tmpArray = [self.zhiBiaoArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"month == '%@'", month]]];
        [resultDict setObject:tmpArray forKey:month];
    }
    
    self.resultDict = resultDict;
  • 使用 AFN 配置伺服器自己創建的 https 證書的 https
    • 使用 AFN 忽略所有 https 證書、不檢測功能變數名稱的策略

      AFSecurityPolicy *secPolicy        = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
      secPolicy.allowInvalidCertificates = YES;
      secPolicy.validatesDomainName      = NO;
      _mgr.securityPolicy                = secPolicy;
    • 配置 AFN 本地 https證書? 不清楚如何配置
  • PNChart 修改 節點label 的大小,在源碼中修改

- (CATextLayer *)createPointLabelFor:(CGFloat)grade pointCenter:(CGPoint)pointCenter width:(CGFloat)width withChartData:(PNLineChartData *)chartData {
    CATextLayer *textLayer = [[CATextLayer alloc] init];
    [textLayer setAlignmentMode:kCAAlignmentCenter];
    [textLayer setForegroundColor:[chartData.pointLabelColor CGColor]];
    [textLayer setBackgroundColor:[[[UIColor whiteColor] colorWithAlphaComponent:0.8] CGColor]];
    [textLayer setCornerRadius:textLayer.fontSize / 8.0];

    if (chartData.pointLabelFont != nil) {
        [textLayer setFont:(__bridge CFTypeRef) (chartData.pointLabelFont)];
        textLayer.fontSize = [chartData.pointLabelFont pointSize];
    }

    CGFloat textHeight = textLayer.fontSize * 1.1;
    CGFloat textWidth = width * 7;
    CGFloat textStartPosY;

}
  • PNChart 修改 x 軸 label 的位置,源碼方法
- (void)setXLabels:(NSArray *)xLabels withWidth:(CGFloat)width  {
}
  • PNChart 修改 y 軸,源碼方法
- (void)setYLabels {
PNChartLabel *minLabel = [[PNChartLabel alloc] initWithFrame:CGRectMake(0.0, (NSInteger) _chartCavanHeight - 10, (NSInteger) _chartMarginBottom, (NSInteger) _yLabelHeight)];

CGRect labelFrame = CGRectMake(0.0,
                    (NSInteger) (_chartCavanHeight + _chartMarginTop - index * yStepHeight) -10,

}
  • PNChart 修改曲線 水平方嚮往後整體便移一點距離,源碼方法
- (void)calculateChartPath:(NSMutableArray *)chartPath andPointsPath:(NSMutableArray *)pointsPath andPathKeyPoints:(NSMutableArray *)pathPoints andPathStartEndPoints:(NSMutableArray *)pointsOfPath {


int x = i * _xLabelWidth + _chartMarginLeft + _xLabelWidth / 2.0 + 6;


}




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 作者:Antonio Leiva 時間:Feb 2, 2017 原文鏈接:https://antonioleiva.com/functional-operations-collections-kotlin/ 對於我來說,我必須承認用Java代碼處理列表是最令人沮喪的事之一。 在這方面,雖然Java ...
  • 根據功能模塊劃分(Android開發推薦此方法) - Activity mobilesafe.activty - 後臺服務 mobilesafe.service - 廣播接受者 mobilesafe.receiver - 資料庫 mobilesafe.db.dao - 對象(java bean) m ...
  • 在google play上發佈apk,當上傳了apk文件,填寫了相關的內容信息和介紹圖片、圖標後,出現“發佈應用”始終灰色無法點擊,查看原因顯示如下問題: 其中支持的設備數量始終顯示為0,懷疑是編譯出來的apk哪裡不規範! 經過對原有工程代碼的查找修改,去除了mips和x86兩個jniLibs下的鏈 ...
  • 學習視頻之後自己操作時的筆記。 0.視頻地址:http://www.imooc.com/video/3265 1.功能預覽: 說明:1)輸入錯誤用戶名和密碼,點擊登錄,彈出提示框“禁止登錄”; 2)輸入正確用戶名和密碼,點擊登錄,彈出提示框“登錄成功”; 3)輸入正確用戶名和密碼,並且勾選保存用戶名 ...
  • 沒有蘋果電腦打包iOS平臺的 Ionic 2程式——《Ionic 2 實例開發》更新內容春節剛過,祝各位新的一年裡萬事如意,一帆風順。《Ionic 2 實例開發》在這段時間里更新瞭如下內容:Ionic 2 中使用管道處理數據Ionic 2 中使用HTTP與遠程伺服器交互數據Ionic 2 中的樣式與 ...
  • 0.視頻地址:http://www.imooc.com/video/3265 1.使用SharePreferences存取數據: public class MainActivity extends Activity { @Override protected void onCreate(Bundle ...
  • 作者:Antonio Leiva 時間:Jan 25, 2017 原文鏈接:https://antonioleiva.com/data-classes-kotlin/ 在前面的文章中,我們已經見到了類,而數據類還可以進一步幫助我們簡化代碼。 數據類是什麼? 數據類是僅僅包含狀態而沒有任何可執行的操作 ...
  • Android 第三方類庫之EventBus 1 PS 工欲善其事必先利其器. Eventbus也是一款在開發中常用的利器 這篇也對EventBus的簡單介紹和使用,與之前個xutils介紹的級別一樣.http://www.cnblogs.com/greentomlee/p/6025470.html... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...