前段时间做了一些小东西,一些关键点记录总结如下

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:xy:yspatialReference:[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效果图

转载于:https://www.cnblogs.com/colinhou/p/4472809.html

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

  1. ios html调起高德地图,iOS开发笔记 调起本地地图导航(百度、高德、腾讯、苹果自带)...

    地图 从自己的APP跳转到用户本地的APP进行导航.首先,要先查看用户都安装了哪些地图类APP. 下面分3种情况进行分析: 1.用户没有安装第三方的地图,只有苹果自带的地图应用. 2.用户安装一款第三 ...

  2. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...

  3. IOS开发笔记之推广安装(用网页判断是否安装App)

    IOS开发笔记之推广安装(用网页判断是否安装App) 在做App推广的时候,我们经常会用到网页链接下载,亦或是一张二维码,最常见的做法就是将App在iTunes中的下载链接嵌入,当用户扫描或者点击网页 ...

  4. IOS开发笔记之常用的第三方库(太多了。)

    图像: 1.图片浏览控件MWPhotoBrowser  实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...

  5. IOS开发笔记2-C语言基础复习

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53439812 本文出自:[顾林海的博客] 前言 在正式进入ios开发前 ...

  6. IOS开发笔记1-写一个hello world!程序

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53227222 本文出自:[顾林海的博客] 序言 从今天开始正式踏上io ...

  7. iOS开发笔记--iOS应用架构谈 view层的组织和调用方案

    前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二 ...

  8. iOS开发笔记 -- 推送证书的创建及合并

    iOS开发推送功能 在这里整理一下推送的步骤希望对大家有所帮助 推送证书,有效期限制一般为一年.当我们证书过期的时候,就需要重新生成证书了 . 我从头开始,也就是,你的开发者账号是空空的,什么都没有开 ...

  9. iOS开发笔记(二):block循环引用

    写这篇文章的缘由是第一次面试时被问到了block循环引用的问题,当时回答的不是很好,首先要明确的是,block是否用copy修饰决定不了循环引用的产生,在此再一次进行补强,有不对的地方还请多多指教. ...

  10. iOS开发笔记 - 界面调试神器Reveal

    http://blog.csdn.net/jackfrued/article/details/50934092 Reveal是iOS开发工具中的神器之一,它能够在应用程序运行过程中调试应用程序界面. ...

最新文章

  1. kali扫描内网ip_来,我们聊聊内网渗透!
  2. Linux下JNI实现
  3. Python报错:IndentationError: unindent does not match any outer indentation level解决办法
  4. python抖音github_GitHub - eternal-flame-AD/Douyin-Bot: Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?...
  5. Web安全的三个攻防姿势
  6. 人脸认证源码faceIdentify
  7. AUTOSAR协议解析篇(一)-J1939协议解析
  8. vs2010 学习Silverlight学习笔记(11):数据与通信之WebClient
  9. 应用发布前,需要注意事情
  10. android 相机和照片一起_Android相机开发(三): 实现拍照录像和查看
  11. 20165334 《java程序设计》第5周学习总结
  12. 云课堂让职业院校云计算教学更简单
  13. OpenGL基础48:高度贴图(上)
  14. 【Python打卡2019】20190423之52周存钱挑战-for+range()函数使用
  15. window微信双开
  16. 关于打开网页FLASH显示叉叉问题
  17. 交互式shell脚本实操
  18. 分享一道面试题:10ml试管10ml的水,一个7ml,一个3ml,将10ml分成两个5ml的
  19. python写井字棋_python 游戏(井字棋)
  20. Mybatis_Mapper动态代理的使用

热门文章

  1. Python招聘岗位信息聚合系统源码(爬虫爬取、数据分析、可视化、互动等功能)...
  2. python爬取51job关于python的招聘信息
  3. 全息投影的发展潜力不可估量,百度神灯搜索不是梦
  4. “select count (1)”是什么意思?
  5. 中南大学计算机学院复试差额录取比例,中南大学在职研究生复试差额比例大概是多少...
  6. cf1504E - Travelling Salesman Problem
  7. android 禁止第三方相机,谷歌突然宣布,Android 11推出新规,第三方相机软件猝不及防...
  8. Java中级内容——异常处理(exception handing)
  9. win10设置计算机关机时间,win10怎样固定时间关机_win10怎样设置电脑关机时间设置...
  10. Java里用Frame框架写流星雨