前段時間做了一些小東西,一些關(guān)鍵點記錄總結(jié)如下
主要是使用UITableView以及NSUserDefaults完成任務(wù)管理,可新建、編輯及刪除任務(wù)。
因為是Demo性質(zhì),所以利用NSUserDefaults做數(shù)據(jù)持久化,作為一個plist存儲在應(yīng)用的沙盒里。需要注意的是更新數(shù)據(jù)時需要立即同步一下“[[NSUserDefaults standardUserDefaults] synchronize]”,防止遇到異常情況如應(yīng)用崩潰導(dǎo)致數(shù)據(jù)丟失等。
進入應(yīng)用時,再從沙盒里讀取已有數(shù)據(jù)。
效果圖如下,可新建、編輯及刪除任務(wù),紅色代表任務(wù)待處理,點擊cell顏色變成綠色代表已完成,再點擊則變紅,通過點擊cell更新任務(wù)處理情況,其他還有tableView常見的查看詳情、排序等。
主要使用CoreData做數(shù)據(jù)持久層存儲數(shù)據(jù),利用系統(tǒng)自帶的Core Image Filter做濾鏡功能(在模擬器上濾鏡處理非常慢)。
需要注意的是遇到CoreData模型更新后編譯報錯,檢查代碼無誤,可能重建模型或者刪除模擬器上的對應(yīng)程序再編譯就正常了,暫時沒有找到原因,CoreData是iOS自帶的ORM框架,但感覺水有點深,需要再專門研究下。
使用Core Image Filter時需要注意filterName的拼寫,詳細參考:Core Image Filter Reference
主要使用ArcGIS Runtime SDK for iOS 10.2.4開發(fā),需要注意以下幾點:
(1)iOS8開始,使用定位功能需要在info.plist里設(shè)置
設(shè)置“NSLocationWhenInUseUsageDescription”和“NSLocationAlwaysUsageDescription”,這樣應(yīng)用運行時才會彈出提示框供用戶選擇,也就是平時看到有些應(yīng)用啟動時會提示是否允許一直獲得位置信息或僅當(dāng)應(yīng)用運行時獲得位置信息。例如在info.plist里添加“NSLocationWhenInUseUsageDescription”這一項,value則代表彈出框中的提示語。
(2)在模擬器中可通過新建一個gpx文件來模擬一個具體位置信息,調(diào)試時選擇根據(jù)這個gpx文件進行定位即可。
(3)坐標(biāo)系的轉(zhuǎn)換,由于ArcGIS Runtime SDK for iOS 沒有直接提供wgs1984到WebMercator的轉(zhuǎn)換方法,可通過以下方法進行轉(zhuǎn)換
-(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)可通過代碼控制界面旋轉(zhuǎn)方向,通過工程設(shè)置控制設(shè)備旋轉(zhuǎn)方向。
(5)用到的一些第三方類庫:
下拉刷新控件MJRefresh 、聚類分析clusterlayer-plugin-ios、動態(tài)輸入框以及常用的JSONKit、AFNetWorking、MBPRogressHUD
天氣預(yù)報信息調(diào)用的是百度API Store找到第三方API:http://apistore.baidu.com/astore/serviceinfo/1798.html
(6)使用AFNetWorking時,數(shù)據(jù)返回格式為"text/plain"時,AFNetWorking默認支持格式是沒有此項的,需要在源碼AFHTTPResponseSerializer.m中添加此項格式即可。
效果圖(模擬器上渲染比較卡):
(1)對于背景圖片可直接在Xcode設(shè)置為拉伸模式
(2)使用kvc來讀寫readonly的成員變量,例如重寫tabBarViewController后,對tabBar重新設(shè)置,方便實現(xiàn)自定義控件效果。
(3)使用ScrollView+PageControl實現(xiàn)新特性頁面的效果,移動scrollView時需要實現(xiàn)整頁翻動效果,而實際scrollView已經(jīng)提供了一個屬性pagingEnabled,啟用即可,否則還是scrollView默認的滾動效果。
(4)應(yīng)用進入后臺狀態(tài)時,如果想在app圖標(biāo)上顯示未讀微博數(shù)量,需要進行權(quán)限設(shè)置,否則報錯“"Attempting to badge the application icon but haven't received permission from the user to badge the application"
參考資料:
(5)Xcode6以后如果還想像之前一樣設(shè)置啟動圖片,需要單獨新建LaunchImage,并修改相關(guān)設(shè)置,如圖所示
效果圖:
推薦兩個插件:寫注釋專用的VVDocumenter、圖片預(yù)覽插件KSImageNamed
KSImageNamed效果圖
新聞熱點
疑難解答