iOS开发笔记1:ToDoList、相册、地图应用及新浪微博
前段时间做了一些小东西,一些关键点记录总结如下
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"


参考资料:
(5)Xcode6以后如果还想像之前一样设置启动图片,需要单独新建LaunchImage,并修改相关设置,如图所示

效果图:

5.Xcode插件
推荐两个插件:写注释专用的VVDocumenter、图片预览插件KSImageNamed
KSImageNamed效果图

iOS开发笔记1:ToDoList、相册、地图应用及新浪微博的更多相关文章
- iOS开发笔记7:Text、UI交互细节、两个动画效果等
Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...
- iOS开发笔记-两种单例模式的写法
iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h" ...
- iOS开发笔记--什么时候调用layoutSubviews
iOS开发笔记--什么时候调用layoutSubviews 分类: iOS2014-04-22 16:15 610人阅读 评论(0) 收藏 举报 今天在写程序时候遇见layoutSubviews触发时 ...
- IOS开发笔记(4)数据离线缓存与读取
IOS开发笔记(4)数据离线缓存与读取 分类: IOS学习2012-12-06 16:30 7082人阅读 评论(0) 收藏 举报 iosiOSIOS 方法一:一般将服务器第一次返回的数据保存在沙盒里 ...
- IOS开发笔记 IOS如何访问通讯录
IOS开发笔记 IOS如何访问通讯录 其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的. 幸好ios6.0 以后给了个权限控制.当打开app的时候你可以选择拒绝. 实现方法: [plain] ...
- 【Swift】iOS开发笔记(二)
前言 这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 7 条发一篇. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯 ...
- 菜鸟手下的iOS开发笔记(swift)
在阳春4月的一天晨会上,有一个老板和蔼的对他的一个菜鸟手下说:“你既然会Android,那你能不能开发iOS?” 不是说好的要外包的吗?内心跌宕,但是表面淡定的菜鸟手下弱弱的回道:“可以试试”. 第二 ...
- iOS开发笔记4:HTTP网络通信及网络编程
这一篇主要总结iOS开发中进行HTTP通信及数据上传下载用到的方法.网络编程中常用的有第三方类库AFNetworking或者iOS7开始新推出的NSURLSession,还有NSURLSession的 ...
- iOS开发笔记系列-基础1(数据类型与表达式)
学习iOS开发快两年了,去年完成MagViewer之后就因为公司的其他业务繁重,除了维护这个应用之外,只是断断续续地自己做一些实验开发,没有再发布新的应用,这里想整理一下学习过程中的笔记,以便加深印象 ...
- 【IOS开发笔记03-视图相关】简单计算器的实现
UIView 经过前几天的快速学习,我们初步了解的IOS开发的一些知识,中间因为拉的太急,忽略了很多基础知识点,这些知识点单独拿出来学习太过枯燥,我们在今后的项目中再逐步补齐,今天我们来学习APP视图 ...
随机推荐
- SQL:一句话删除重复的数据
--构造原始数据 )) --插入数据 INSERT INTO #T (N)VALUES ('A') --方式一:一句话删除重复数据(无主键) --方式二:采用CTQ,with的写法删除 ;
- iOS-开发技巧-页面布局
#pragma mark - Life Cycle//1.初始化//2.view did load//3.view will appear…#pragma mark - System Delegate ...
- iOS-修改Status Bar
一.在info.plist文件中添加一行不但要在 Status bar is initially hidden一行,选择为 YES. 二.在didFinishLaunchingWithOptions方 ...
- iOS-UIView-设置背景图片4种方式
一 . 设置UIView的背景图片 1.将图片作为UIView的背景色,该方法过于占内存,不建议使用. //1.imageNamed方式 self.view.backgroundColor = ...
- Android 学习笔记 BroadcastReceiver广播...
PS:不断提升自己,是件好事... 学习内容: 1.BroadcastReceiver的使用.. 2.通过BroadcastReceiver去启动Service... 1.BroadcastRecei ...
- The Linux Process Principle,NameSpace, PID、TID、PGID、PPID、SID、TID、TTY
目录 . 引言 . Linux进程 . Linux命名空间 . Linux进程的相关标识 . 进程标识编程示例 . 进程标志在Linux内核中的存储和表现形式 . 后记 0. 引言 在进行Linux主 ...
- IOS开发UI基础之Plis文件-字典转模型
什么是plist文件? 在开发中直接将数据写在代码里面 不是一种合理的做法 如果数据经常改变 就需要经常翻开对应的代码进行修改 造成代码扩展性低 因此,可以考虑将经常变的数据放在⽂文件中进⾏行存储,程 ...
- AFNetworking 原作者都无法解决的问题: 如何使用ip直接访问https网站?
背景 最近App似乎有报异常是DNS无法解析,尝试解决此问题.搜集到的资料很少,甚至连AFN原作者都判定这可能是一个无解的问题,参见: https://github.com/AFNetworking/ ...
- 具有timeout 功能的函数调用
做项目的时候有时经常会需要一个带有timeout功能的函数调用. 比如从后台读数据并期望在给定时间内返回.借此机会包装了一个简单的C# class, 直接上代码吧. public class Time ...
- c#重点[集合类型]异常,数组,集合ArrayList,List<>,hashTable,hashtable泛型(Dictionary)
1.foreach[对一些数组或集合进行遍历] foreach(类型 变量名 in 集合对象){语句体} //定义一个数组 ,,,,, }; foreach(var i in sNum1) { Con ...