標籤:
前段時間做了一些小東西,一些關鍵點記錄總結如下
1.ToDoList
主要是使用UITableView以及NSUserDefaults完成任務管理,可建立、編輯及刪除任務。
因為是Demo性質,所以利用NSUserDefaults做資料持久化,作為一個plist儲存在應用的沙箱裡。需要注意的是更新資料時需要立即同步一下“[[NSUserDefaults standardUserDefaults] synchronize]”,防止遇到異常情況如應用崩潰導致資料丟失等。
進入應用時,再從沙箱裡讀取已有資料。
如下,可建立、編輯及刪除任務,紅色代表任務待處理,點擊cell顏色變成綠色代表已完成,再點擊則變紅,通過點擊cell更新任務處理情況,其他還有tableView常見的查看詳情、排序等。
2.相簿
主要使用CoreData做資料持久層儲存資料,利用系統內建的Core Image Filter做濾鏡功能(在模擬器上濾鏡處理非常慢)。
需要注意的是遇到CoreData模型更新後編譯報錯,檢查代碼無誤,可能重建模型或者刪除模擬器上的對應程式再編譯就正常了,暫時沒有找到原因,CoreData是iOS內建的ORM架構,但感覺水有點深,需要再專門研究下。
使用Core Image Filter時需要注意filterName的拼字,詳細參考:Core Image Filter Reference
3.地圖應用
主要使用ArcGIS Runtime SDK for iOS 10.2.4開發,需要注意有以下幾點:
(1)iOS8開始,使用定位功能需要在info.plist裡設定
設定“NSLocationWhenInUseUsageDescription”和“NSLocationAlwaysUsageDescription”,這樣應用運行時才會彈出提示框供使用者選擇,也就是平時看到有些應用啟動時會提示是否允許一直獲得位置資訊或僅當應用運行時獲得位置資訊。例如在info.plist裡添加“NSLocationWhenInUseUsageDescription”這一項,value則代表彈出框中的提示。
(2)在模擬器中可通過建立一個gpx檔案來類比一個具體位置資訊,調試時選擇根據這個gpx檔案進行定位即可。
(3)座標系的轉換,由於ArcGIS Runtime SDK for iOS 沒有直接提供wgs1984到WebMercator的轉換方法,可通過以下方法進行轉換
-(AGSPoint *) wgs1984Point2WebMercatorPoint:(AGSPoint *) point{ double x = point.x * 20037508.34 / 180; double y = log( tan ((90 + point.y) * M_PI / 360)) / (M_PI / 180); y = y * 20037508.34 / 180; AGSPoint *webMercatorPoint = [[AGSPoint alloc] initWithX:x y:y spatialReference:[AGSSpatialReference spatialReferenceWithWKID:3857]]; return webMercatorPoint ;}
(4)可通過代碼控制介面旋轉方向,通過工程設定控制裝置旋轉方向。
(5)用到的一些第三方類庫:
下拉重新整理控制項MJRefresh 、群集clusterlayer-plugin-ios、動態輸入框以及常用的JSONKit、AFNetWorking、MBProgressHUD
天氣預報資訊調用的是百度API Store找到第三方API:http://apistore.baidu.com/astore/serviceinfo/1798.html
(6)使用AFNetWorking時,資料返回格式為"text/plain"時,AFNetWorking預設支援格式是沒有此項的,需要在源碼AFHTTPResponseSerializer.m中添加此項格式即可。
(模擬器上渲染比較卡):
4.新浪微博
(1)對於背景圖片可直接在Xcode設定為展開模式
(2)使用kvc來讀寫readonly的成員變數,例如重寫tabBarViewController後,對tabBar重新設定,方便實現自訂控制項效果。
(3)使用ScrollView+PageControl實現新特性頁面的效果,移動scrollView時需要實現整頁翻動效果,而實際scrollView已經提供了一個屬性pagingEnabled,啟用即可,否則還是scrollView預設的滾動效果。
(4)應用進入後台狀態時,如果想在app表徵圖上顯示未讀微博數量,需要進行使用權限設定,否則報錯“"Attempting to badge the application icon but haven‘t received permission from the user to badge the application"
參考資料:
http://stackoverflow.com/questions/25973364/attempting-to-badge-the-application-icon-but-havent-received-permission-from-th
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW2
(5)Xcode6以後如果還想像之前一樣設定啟動圖片,需要單獨建立LaunchImage,並修改相關設定,
:
5.Xcode外掛程式
推薦兩個外掛程式:寫注釋專用的VVDocumenter、圖片預覽外掛程式KSImageNamed
KSImageNamed
iOS開發筆記1:ToDoList、相簿、地圖應用及新浪微博