
iOS
文章平均质量分 84
zry754331875
这个作者很懒,什么都没留下…
展开
-
iOS开发系列--数据存取
概览在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库。例如前面IOS开发系列—Objective-C之Foundation框架的文章中提到归档、plist文件存储,包括偏好设置其本质都是存储为文件,只是说归档或者plist文件存储可以选择保存到沙盒中,而偏好设置系统已经规定只能保存到沙盒的Library/Preferences目录。当然,文件存储并不作为本转载 2016-05-10 17:02:09 · 472 阅读 · 0 评论 -
iOS 7 的多任务
在 iOS 7 之前,当程序置于后台之后开发者们对他们程序所能做的事情非常有限。除了 VOIP 和基于地理位置特性以外,唯一能做的地方就是使用后台任务(background tasks)让代码可以执行几分钟。如果你想下载比较大的视频文件以便离线浏览,亦或者备份用户的照片到你的服务器上,你都仅能完成一部分工作。iOS 7 添加了两个新的 API 以便你的程序可以在后台更新界面以及内容。首先是转载 2016-02-15 12:47:04 · 371 阅读 · 0 评论 -
UICollectionView + UIKit Dynamics
UIKit Dynamics 是 iOS 7 中基于物理动画引擎的一个新功能--它被特别设计使其能很好地与 collection views 配合工作,而后者是在 iOS 6 中才被引入的新特性。接下来,我们要好好看看如何将这两个特性结合在一起。 这篇文章将讨论两个结合使用 UIkit Dynamics 和 collection view 的例子。第一个例子展示了如何去实现像 iOS 7转载 2016-02-15 12:44:26 · 333 阅读 · 0 评论 -
初识 TextKit
iOS 7 的发布给开发者的案头带来了很多新工具。其中一个就是 TextKit。TextKit 由许多新的 UIKit 类组成,顾名思义,这些类就是用来处理文本的。在这里,我们将介绍 TextKit 的来由、它的组成,以及通过几个例子解释开发者怎样将它派上大用场。但是首先我们得先阐明一个观点:TextKit 可能是近期对 UIKit 最重要的补充了。iOS 7 的新界面用纯文本按钮替换了大转载 2016-02-15 12:43:01 · 281 阅读 · 0 评论 -
自定义 Formatters
我们希望有一种快速的一次性的解决方案,可以把数据格式化为一种易读的格式。Foundation 框架中的就有 NSFormatter 可以很好地胜任这个工作。另外,在 Mac 上,Appkit 已经内建了 NSFormatter 的支持。内建格式器Foundation 框架中的 NSFormatter 是一个抽象类,它有两个已经实现的子类:NSNumberFormatter 与 NS转载 2016-02-15 11:50:12 · 472 阅读 · 0 评论 -
字符串渲染
在本期中我们已经讨论了很多关于字符串不同的话题,从编码到本地化再到语法分析。但多数情况下,字符串最终还是需要被绘制到屏幕上供用户查看、交互。这篇文章涵盖了最基本、最好的练习,以及在用户界面上呈现字符串可能遇到的常见陷阱。如何将字符串绘制到屏幕上简单起见,我们先看看 UIKit 在字符串渲染方面为我们提供了哪些控件。之后我们将讨论一下对于字符串的渲染,iOS 和 OS X 系统中有哪转载 2016-02-15 11:40:24 · 301 阅读 · 0 评论 -
字符串解析
在几乎每一种计算机程序语言中,解析字符串都是我们不得不面对的问题。有时这些字符串以一种简单的格式出现,有时它们又变得很复杂。我们将利用多种方法把字符串转换成我们需要的东西。下面,我们将讨论正则表达式、扫描器、解析器以及在什么时候使用它们。正则法 vs. 上下文无关文法(Context-Free Grammars)首先,介绍一点点背景知识:解析一个字符串,其实就是用特定的语言来描述它转载 2016-02-15 11:33:10 · 1376 阅读 · 0 评论 -
玩转字符串
在每个应用里我们都大量使用字符串。下面我们将快速看看一些常见的操作字符串的方法,过一遍常见操作的最佳实践。字符串的比较、搜索和排序排序和比较字符串比第一眼看上去要复杂得多。不只是因为字符串可以包含代理对(surrogate pairs )(详见 Ole 写的这篇关于 Unicode 的文章) ,而且比较还与字符串的本地化相关。在某些极端情况下相当棘手。苹果文档中 Strin转载 2016-02-15 11:23:33 · 396 阅读 · 0 评论 -
NSString 与 Unicode
当你在处理文本时,如果你不是在写一些非常古老的代码(legacy code),那么你一定要使用 Unicode。幸运的是,苹果和 NeXT 一直致力于推动 Unicode 标准的建立,而 NeXT 在 1994 年推出的 Foundation Kit 则是所有编程语言中最先基于 Unicode 的标准库之一。但是,即使 NSString 完全支持 Unicode,还替你干了大部分的重活儿,转载 2016-02-15 11:21:53 · 231 阅读 · 0 评论 -
XCTest 测试实战
差不多四个月以前,我们团队 (Marco, Arne 和 Daniel) 开始着手为我们的新应用写模型层。我们想在开发中使用测试,经过一番讨论之后,我们选择 XCTest 作为我们的测试框架。目前为止,我们的编码库已经纵横 190 个文件和 18,000 行代码,达到了 544 kB。我们测试部分的代码现在差不多有1,200 kB,大概有被测试代码的两倍。虽然我们还没有完全结束这个项目,但转载 2016-02-15 11:17:36 · 852 阅读 · 0 评论 -
基于 OpenCV 的人脸识别
一点背景知识OpenCV 是一个开源的计算机视觉和机器学习库。它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包。根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展览的技术实现中,都有 OpenCV 的身影。OpenCV 起始于 1999 年 Intel 的一个内部研究项目。从那时起,它的开发就一直很活跃。进化到现在转载 2016-02-15 11:14:45 · 699 阅读 · 0 评论 -
GPU 加速下的图像视觉
越来越多的移动计算设备都开始携带照相机镜头,这对于摄影界来说是一个好事情,不仅如此携带镜头也为这些设备提供了更多的可能性。除了最基本的拍摄功能,结合合适的软件这些更为强大的硬件设备可以像人脑一样理解它看到了什么。仅仅具备一点点的理解能力就可以催生一些非常强大的应用,比如说条形码识别,文档识别和成像,手写文字的转化,实时图像防抖,增强现实等。随着处理能力变得更加强大,镜头保真程度更高,算法效转载 2016-02-15 11:13:22 · 631 阅读 · 0 评论 -
GPU 加速下的图像处理
Instagram,Snapchat,Photoshop。所有这些应用都是用来做图像处理的。图像处理可以简单到把一张照片转换为灰度图,也可以复杂到是分析一个视频,并在人群中找到某个特定的人。尽管这些应用非常的不同,但这些例子遵从同样的流程,都是从创造到渲染。在电脑或者手机上做图像处理有很多方式,但是目前为止最高效的方法是有效地使用图形处理单元,或者叫 GPU。你的手机包含两个不同的转载 2016-02-15 11:10:55 · 913 阅读 · 0 评论 -
自定义 Collection View 布局
UICollectionView 在 iOS6 中第一次被引入,也是 UIKit 视图类中的一颗新星。它和 UITableView 共享一套 API 设计,但也在 UITableView 上做了一些扩展。UICollectionView 最强大、同时显著超出 UITableView 的特色就是其完全灵活的布局结构。在这篇文章中,我们将会实现一个相当复杂的自定义 collection view转载 2016-02-15 13:01:27 · 290 阅读 · 0 评论 -
Core Data 概述
Core Data 可能是 OS X 和 iOS 里面最容易被误解的框架之一,为了帮助大家理解,我们将快速的研究 Core Data,让大家对它有一个初步的了解,对于想要正确使用 Core Data 的同学来说,理解它的概念是非常必要的。几乎所有对 Core Data 感到失望的原因都是因为对它工作机制的错误理解。让我们开始吧:Core Data 是什么?大概八年前,2005年的四转载 2016-02-15 13:02:58 · 264 阅读 · 0 评论 -
一个完整的 Core Data 应用
在这篇文章中,我们将建立一个小型但却全面支持 Core Data 的应用。此应用允许你创建嵌套的列表;每个列表的 item 都可以有子列表,这将允许你创建非常深层次的 items。为了让大家完整的了解发生了什么,我们将通过使用手动创建堆栈的方式来代替 Xcode 中 Core Data 的模板。这个应用的代码放到了 GitHub 上。我们将怎么建立?首先,我们创建一个 Persis转载 2016-02-15 13:05:00 · 309 阅读 · 0 评论 -
iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
概览随着移动互联网的发展,如今的手机早已不是打电话、发短信那么简单了,播放音乐、视频、录音、拍照等都是很常用的功能。在iOS中对于多媒体的支持是非常强大的,无论是音视频播放、录制,还是对麦克风、摄像头的操作都提供了多套API。在今天的文章中将会对这些内容进行一一介绍:音频音效音乐音频会话录音音频队列服务视频MPMoviePlayerControllerMPMov转载 2016-05-10 16:11:12 · 691 阅读 · 0 评论 -
iOS开发-beginUpdates && endUpdates用法
本篇主要介绍使用beginUpdates和endUpdates方法对UITableView的Cell进行批量操作更新。首先给出过程中依赖的数据源: self.arraySections = [NSMutableArray arrayWithCapacity:0]; NSMutableArray *array1 = [NSMutableArray arrayWithObjects:转载 2016-03-29 10:36:21 · 1031 阅读 · 0 评论 -
Swift 类构造器的使用
这几天在使用 Swift 重写原来的一个运动社交应用 SportJoin. 为什么要重写呢? 首先因为实在找不到设计师给我作图; 其次, 原来写的代码太烂了我也闲不下来, 想找一些项目做, 所以只好将原来的代码重写了. 原来的代码大约是一年半以前写的, 我现在真的不想吐槽当时写的代码有多烂, 有一句话怎么说来着: 程序员连自己写的源代码都不想读, 怎么可能看别人写的源代转载 2016-03-14 10:50:38 · 814 阅读 · 0 评论 -
细说GCD(Grand Central Dispatch)如何用
文中较详细介绍GCD队列,各种GCD使用方法,实例如何使用Dispatch Source监听系统底层对象,分析不同锁的性能对比,实例GCD死锁情况。文中的Demo在这里 https://github.com/ming1016/GCDDemo 对着文章试着来调demo体会更深哦,细细嚼消化好:)GCD(Grand Central Dispatch) 介绍GCD属于系统级的线程管理,在转载 2016-04-02 10:28:12 · 473 阅读 · 0 评论 -
照片框架PhotoKit
介绍每天,用 iPhone 拍摄的照片数量超过了任何相机。每年 iOS 设备上的显示效果变得越来越好,回到 iPad 刚出现还没有 Retina 显示屏的时代,大屏幕的杀手级功能之一就是可以展示用户照片和浏览器照片库。自从相机成为 iPhone 最重要和最受欢迎的功能开始,对能管理和加工用户照片库中宝贵的照片的应用程序和工具就有着巨大的需求。直到 2014 年夏天前,开发者只能转载 2016-02-15 11:05:34 · 356 阅读 · 0 评论 -
IOS应用提交所需尺寸
https://developer.apple.com/library/ios/qa/qa1686/_index.html,苹果官方链接。综上所述,再加上新出的iphone 6 plus 180x180,总共的icon为8个,分别是:Icon.png – 57×57 iPhone (ios5/6) Icon@2x.png – 114×114 iPh原创 2016-02-20 10:32:53 · 435 阅读 · 0 评论 -
iOS自定义转场动画实战讲解
转场动画这事,说简单也简单,可以通过presentViewController:animated:completion:和dismissViewControllerAnimated:completion:这一组函数以模态视图的方式展现、隐藏视图。如果用到了navigationController,还可以调用pushViewController:animated:和popViewController转载 2016-02-16 08:44:33 · 542 阅读 · 0 评论 -
自定义 Core Data 迁移
自定义 Core Data 迁移似乎是一个不太起眼的话题。苹果在这方面只提供了很少的文档,若是初次涉足此方面内容,很可能会变成一个可怕的经历。鉴于客户端程序的性质,你无法测试你的用户所生成的数据集的所有可能排列。此外,解决迁移过程中出现的问题会很困难,而因为极有可能你的代码依赖于最新的数据模型,所以回退并不是一个可选的处理办法。在本文中,我们将走一遍搭建自定义 Core Data 迁移的过转载 2016-02-15 13:10:40 · 302 阅读 · 0 评论 -
Fetch 请求
将对象从存储中取出来的方法之一是使用 NSFetchRequest。但是请注意,一个最常见的错误是在你不需要的时候去读取数据。请确保你已经阅读并理解了获取对象一节中的内容。大多数时候,遍历关系更加有效,而使用 NSFetchRequest 往往成本很高。通常有两个原因使用 NSFetchRequest 来执行数据获取:(1) 你需要为匹配特定谓词 (predicate) 的对象搜索整个对象转载 2016-02-15 13:10:07 · 873 阅读 · 0 评论 -
导入大数据集
往 Core Data 应用中导入大数据集是个很常见的问题。鉴于数据的特点你可以采用以下几种方法:从 web 服务器上下载数据 (例如 JSON 数据),然后插入到 Core Data 中。 从 web 服务器上下载预先生成的 Core Data SQLite 数据库文件。 把一个预先生成好的 Core Data SQLite 数据库文件传到应用程序包中。对某些应用场景后两种选择作转载 2016-02-15 13:09:06 · 575 阅读 · 0 评论 -
数据模型和模型对象
本文我们将会更加深入探讨Core Data 的 models 以及 managed object 的类 。本文绝不是对 Core Data 的简单概述,而是在实际运用中鲜为人知或不易记忆却可以发挥奇效的那一部分的合集。如果你需要的是更详细的概述,那么我推荐你去看 “Apple's Core Data Programming Guid”。数据模型Core Data数据模型(储转载 2016-02-15 13:08:06 · 1011 阅读 · 0 评论 -
用 SQLite 和 FMDB 替代 Core Data
凭良心讲,我不能告诉你不去使用 Core Data。它不错,而且也在变得更好,并且它被很多其他 Cocoa 开发者所理解,当有新人加入你的团队或者需要别人接手你的 app 的时候,这点很重要。更重要的是,不值得花时间和精力去写自己的系统去代替它。使用 Core Data 吧。真的。为什么我不使用Core DataMike Ash 写到:就个人而言,我不是个狂热粉转载 2016-02-15 13:07:18 · 313 阅读 · 0 评论 -
Core Image 介绍
这篇文章会为初学者介绍一下 Core Image,一个 OS X 和 iOS 的图像处理框架。如果你想跟着本文中的代码学习,你可以在 GitHub 上下载示例工程。示例工程是一个 iOS 应用程序,列出了系统提供的大量图像滤镜以供选择,并提供了一个用户界面用来调整参数并观察效果。虽然示例代码是用 Swift 写的 iOS 程序,不过实现概念很容易转换到 Objective-C 和转载 2016-02-15 11:09:16 · 269 阅读 · 0 评论 -
照片扩展
在 iOS 8 发布时,苹果把六种全新扩展功能介绍给全世界,它们史无前例的提供了访问操作系统的可行性。现在,开发者可以利用照片扩展来为系统相机应用增加功能。用户使用照片编辑扩展的流程并不简单。从选择编辑的照片开始,需要点击三次才能启动,其中一步骤是非常小一个按钮:然而,这类扩展给开发者提供了为用户创造无缝体验,创建一致的方法来管理照片的绝佳的机会。本文在了解更详细的转载 2016-02-15 11:07:33 · 522 阅读 · 0 评论 -
iOS 上的相机捕捉
第一台 iPhone 问世就装有相机。在第一个 SKDs 版本中,在 app 里面整合相机的唯一方法就是使用 UIImagePickerController,但到了 iOS 4,发布了更灵活的 AVFoundation 框架。在这篇文章里,我们将会看到如何使用 AVFoundation 捕捉图像,如何操控相机,以及它在 iOS 8 的新特性。概述AVFoundation v转载 2016-02-15 11:04:22 · 1116 阅读 · 0 评论 -
Sprite Kit编程指南(9)-Sprite Kit最佳实践
Sprite Kit最佳实践此时此刻,你已经十分清楚Sprite Kit可以做什么以及它是如何做的。你知道如何将节点添加到场景并让那些节点执行动作——创建游戏可玩性(gameplay)的构建块(building blocks)。你可能会错过的是更大的蓝图。也就是说,你需要了解如何使用Sprite Kit规划并开发游戏和工具。为了发挥Sprite Kit的最大功效,你需要知道:转载 2016-02-15 08:58:52 · 224 阅读 · 0 评论 -
Sprite Kit编程指南(8)-模拟物理
Sprite Kit中的物理模拟通过添加物理体场景来进行。物理体是一个模拟的物理对象,该对象连接到场景的节点树中的节点。它使用节点的位置和方向把它自身放置在模拟中。每一个物理体具有其他定义模拟如何操作它的特性。这些属性包括物理对象的先天属性,如它的质量或密度,也包括施加于它的属性,如它的速度。这些特性定义了主体如何移动,它在模拟中是如何受到力的影响,以及它是如何响应与其他物理体的碰撞。每次转载 2016-02-15 08:57:51 · 341 阅读 · 0 评论 -
Sprite Kit编程指南(7)-高级场景处理
使用Sprite Kit涉及到操纵场景树的内容来让内容在屏幕上的动起来。通常情况下,动作是该系统的核心。然而,通过直接地挂接到(hooking into)场景处理,你可以创建动作不能单独完成的其他行为。要做到这一点,你需要学习:· 场景如何处理动画· 如何在场景处理过程中添加自己的行为场景如何处理动画帧在传统视图系统中,视转载 2016-02-15 08:57:02 · 213 阅读 · 0 评论 -
Sprite Kit编程指南(6)-使用其他节点类型
使用其他节点类型虽然精灵是建立游戏时使用的最重要的元素,Sprite Kit还提供了许多其他的节点类。这些节点类中的大部分都提供可视化的内容,类似的SKSpriteNode类。剩下的则不直接绘制自己的内容,而是修改它们在节点树的后代的行为。表6-1列出了所有由Sprite Kit提供的节点类,包括你已经熟悉的SKScene和SKSpriteNode类。表6-1 Sp转载 2016-02-15 08:56:28 · 442 阅读 · 0 评论 -
Sprite Kit编程指南(5)-使用场景间过渡
场景是游戏的基本构建块。通常情况下,你为游戏的各部分设计自包含(self-contained)的场景,然后在必要时在这些场景之间过渡。例如,你可以创建不同的场景类表现任何或全部下列概念:· 在其他内容加载时显示的加载场景· 选择你要玩什么样的游戏的主菜单场景· 用户选择的特定类型游戏的配置细节的场景· 提供游戏的场景·转载 2016-02-15 08:55:29 · 263 阅读 · 0 评论 -
Sprite Kit编程指南(4)-构建场景
构建场景对于场景的使用,你已经学过了很多的东西。这里对重要的事实再快速回顾一下:· 场景(SKScene对象),用来提供SKView对象要渲染的内容。· 场景的内容被创建成树状的节点对象。场景是根节点。· 在场景由视图呈现时,它运行动作并模拟物理,然后渲染节点树。· 你可以通过子类化SKScene类转载 2016-02-15 08:54:55 · 282 阅读 · 0 评论 -
Sprite Kit编程指南(3)-添加动作到节点
绘制精灵很有用,但是一张静态图像只是一幅画,而不是一个游戏。为了添加游戏剧本(game play),你需要能够让精灵在屏幕周围移动并执行其他逻辑。Sprite Kit让场景动起来所使用的主要机制是动作。到目前为止,你已经看过了动作子系统的某些部分。现在,是时候更深入地研究如何构造和执行动作了。一个动作就是定义你想对场景所作的改变的对象。在大多数情况下,一个动作对执行该动作的节点应用其变化。转载 2016-02-15 08:54:11 · 407 阅读 · 0 评论 -
Sprite Kit编程指南(2)-使用精灵
使用精灵精灵是用于创建大部分场景内容的基本构建块,所以在转到其他Sprite Kit节点类之前先了解精灵是有用的。精灵用SKSpriteNode对象表现。一个SKSpriteNode对象,要么绘制成一个由纹理映射(mapped)的矩形,要么绘制成一个彩色无纹理的矩形。纹理精灵更常见,因为它们代表了你把自定义插图引进场景的主要方式。这个自定义插图可能代表你的游戏的人物角色、背景元转载 2016-02-15 08:53:26 · 313 阅读 · 0 评论 -
Sprite Kit编程指南(1)-深入Sprite Kit
深入Sprite Kit学习Sprite Kit最好的方法是在实践中观察它。此示例创建一对场景和各自的动画内容。通过这个例子,你将学习使用Sprite Kit内容的一些基础技术,包括:· 场景在一个基于Sprite Kit的游戏中的角色。· 如何组织节点树来绘制内容。· 使用动作让场景内容动起来。· 如何添转载 2016-02-15 08:52:24 · 249 阅读 · 0 评论