前段時間作了一些小東西,一些關鍵點記錄總結以下html
主要是使用UITableView以及NSUserDefaults完成任務管理,可新建、編輯及刪除任務。ios
由於是Demo性質,因此利用NSUserDefaults作數據持久化,做爲一個plist存儲在應用的沙盒裏。須要注意的是更新數據時須要當即同步一下「[[NSUserDefaults standardUserDefaults] synchronize]」,防止遇到異常狀況如應用崩潰致使數據丟失等。git
進入應用時,再從沙盒裏讀取已有數據。github
效果圖以下,可新建、編輯及刪除任務,紅色表明任務待處理,點擊cell顏色變成綠色表明已完成,再點擊則變紅,經過點擊cell更新任務處理狀況,其餘還有tableView常見的查看詳情、排序等。web
主要使用CoreData作數據持久層存儲數據,利用系統自帶的Core Image Filter作濾鏡功能(在模擬器上濾鏡處理很是慢)。api
須要注意的是遇到CoreData模型更新後編譯報錯,檢查代碼無誤,可能重建模型或者刪除模擬器上的對應程序再編譯就正常了,暫時沒有找到緣由,CoreData是iOS自帶的ORM框架,但感受水有點深,須要再專門研究下。app
使用Core Image Filter時須要注意filterName的拼寫,詳細參考:Core Image Filter Reference框架
主要使用ArcGIS Runtime SDK for iOS 10.2.4開發,須要注意如下幾點:ui
(1)iOS8開始,使用定位功能須要在info.plist裏設置spa
設置「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中添加此項格式便可。
效果圖(模擬器上渲染比較卡):
(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"
參考資料:
(5)Xcode6之後若是還想像以前同樣設置啓動圖片,須要單獨新建LaunchImage,並修改相關設置,如圖所示
效果圖:
推薦兩個插件:寫註釋專用的VVDocumenter、圖片預覽插件KSImageNamed
KSImageNamed效果圖