iOS开发笔记1:ToDoList、相册、地图应用及新浪微博

     前段时间作了一些小东西,一些关键点记录总结以下html

1.ToDoList

      主要是使用UITableView以及NSUserDefaults完成任务管理,可新建、编辑及删除任务。ios

      由于是Demo性质,因此利用NSUserDefaults作数据持久化,做为一个plist存储在应用的沙盒里。须要注意的是更新数据时须要当即同步一下“[[NSUserDefaults standardUserDefaultssynchronize]”,防止遇到异常状况如应用崩溃致使数据丢失等。git

进入应用时,再从沙盒里读取已有数据。github

效果图以下,可新建、编辑及删除任务,红色表明任务待处理,点击cell颜色变成绿色表明已完成,再点击则变红,经过点击cell更新任务处理状况,其余还有tableView常见的查看详情、排序等。web

2.相册

      主要使用CoreData作数据持久层存储数据,利用系统自带的Core Image Filter作滤镜功能(在模拟器上滤镜处理很是慢)。api

      须要注意的是遇到CoreData模型更新后编译报错,检查代码无误,可能重建模型或者删除模拟器上的对应程序再编译就正常了,暂时没有找到缘由,CoreData是iOS自带的ORM框架,但感受水有点深,须要再专门研究下。app

      使用Core Image Filter时须要注意filterName的拼写,详细参考:Core Image Filter Reference框架

3.地图应用

    主要使用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中添加此项格式便可。

      

效果图(模拟器上渲染比较卡):

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效果图

相关文章
相关标签/搜索