摘要: 前面讲了如何让程序申请后台短时运行。但这个额外延长的时间毕竟有限。所以从iOS7起又引入两种在后台运行任务的方式:后台获取和后台通知。1,后台获取介绍后台获取(Background Fetch)是为了那些需要定期更新的应用程序设计的,比如天气应用,新闻客户端,社交网络应用程序等。在启动后台获取之后,... 阅读全文
posted @ 2015-09-28 20:28 brave-sailor 阅读(598) 评论(0) 推荐(0)
摘要: 1,程序的挂起和退出由于iOS设备资源有限。当用户点击了home键,或者另一个应用程序启动了。那么原先那个程序便进入后台被挂起,不是退出,只是停止执行代码,同时它的内存被锁定。当应用程序恢复时,它会从停止的位置重新开始。2,如下特殊的应用程序可以在后台长时间的运行(1)在后台播放音频的应用程序可以在... 阅读全文
posted @ 2015-09-28 20:27 brave-sailor 阅读(999) 评论(0) 推荐(0)
摘要: 1,委托的说明委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象。比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象B的引用存为一个实例变量。这个对象B称为委托。当事件发生时,它检查委托对象是否实现了与该事件相适应的方法。如果已经实现,则调用该... 阅读全文
posted @ 2015-09-28 16:02 brave-sailor 阅读(404) 评论(0) 推荐(0)
摘要: 在Swift中,可以使用函数类型的参数,也可以使用函数类型的返回值。而作为返回值的函数,还能“捕获”外部的值,并多次使用它。这个特性,常可用来创建各种生成器。下面通过创建一个“随机数生成器函数”作为演示:在指定范围内生成随机数,同时每次生成的随机数都不重复。123456789101112131415... 阅读全文
posted @ 2015-09-28 15:59 brave-sailor 阅读(1060) 评论(0) 推荐(0)
摘要: 闭包(即一些小的匿名代码块),可以像函数一样使用。可以很方便的将闭包传给其他函数,告诉它们应当如何执行某一个任务。1,使用sort方法和闭包进行数组排序sort方法返回一个数组的有序版本。(sort方法即为Swift2.0之前的sorted方法。而原来的sort方法改名为sortInPlace,用来... 阅读全文
posted @ 2015-09-28 15:59 brave-sailor 阅读(439) 评论(0) 推荐(0)
摘要: 自Swift1.1开始,初始化init方法便有返回nil的能力。我们可以在init声明的时候在其后面加上一个 ? 或者 ! 来表示初始化失败时可能返回nil。比如,给Int类添加一个将字符串初始化成数字的init方法。1234567891011121314extension Int {init?(f... 阅读全文
posted @ 2015-09-28 15:54 brave-sailor 阅读(390) 评论(0) 推荐(0)
摘要: 我前面写了篇文章讲解如何给图片添加文字水印,而如果想要添加图片类型的水印也很简单,只要把原来代码里添加文字的部分改成图片即可。1,效果图如下:(在图片左上角添加了一个半透明的logo图片)2,为方便使用,我们通过扩展UIImage类来实现添加图片水印功能(水印图片透明度,位置,边距都可以设置)12... 阅读全文
posted @ 2015-09-28 15:53 brave-sailor 阅读(982) 评论(0) 推荐(0)
摘要: 通常我们可以使用16进制的格式表示RGB颜色,比如0x2f88c0。通过位操作运算,能很方便的将其中的R,G,B颜色各部分分别提取出来。反之,也可以将R,G,B颜色值组合成一个完整的颜色。1,提取颜色的组成部分1234var color:uint = 0x445577var r:uint = col... 阅读全文
posted @ 2015-09-28 15:53 brave-sailor 阅读(349) 评论(0) 推荐(0)
摘要: 想要给图片添加文字水印或者注释,我们需要实现在UIImage上写字的功能。1,效果图如下:(在图片左上角和右下角都添加了文字。)2,为方便使用,我们通过扩展UIImage类来实现添加水印功能(文字大小,文字颜色,背景色,位置,边距都可以设置)12345678910111213141516171819... 阅读全文
posted @ 2015-09-28 15:20 brave-sailor 阅读(1100) 评论(0) 推荐(0)
摘要: 类似于PS,Swift中也可对图片UIImage进行图层混合(blending),而且提供了相当丰富的混合模式(blendMode)。本文先介绍使用其中的kCGBlendModeDestinationIn实现图片颜色的修改。1,扩展UIImage,添加着色方法首先为便于blending,我们扩展系统... 阅读全文
posted @ 2015-09-28 14:12 brave-sailor 阅读(1490) 评论(0) 推荐(0)
摘要: final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作。Swift中,final关键字可以在class、func和var前修饰。通常大家都认为使用final可以更好地对代码进行版本控制,发挥更佳的性能,同时使代码更安全。下面对这些说法做个总结。1,想通过使用fin... 阅读全文
posted @ 2015-09-28 13:55 brave-sailor 阅读(4787) 评论(1) 推荐(0)
摘要: 过去Swift要实现单例,无非是这三种方式:全局变量,内部变量和dispatch_once方式。但都略显繁琐。后来从1.2版本起,Swift中添加了如 static let 和 static var 这样的类变量的支持,这样单例的实现又简化了许多。下面提供两种比较好的单例写法。(要注意:不管哪种写法... 阅读全文
posted @ 2015-09-28 11:58 brave-sailor 阅读(772) 评论(0) 推荐(0)
摘要: String是Swift里新增加的类型,它与原来的NSString可以很方便地互相转换。但在实际开发中,我们该如何选择?1,能使用String类型就尽量使用String类型,原因如下:(1)现在Cocoa里所有的API都能接受和返回String类型,所以也没必要特地转换下。(2)Swift的Stri... 阅读全文
posted @ 2015-09-28 11:57 brave-sailor 阅读(418) 评论(0) 推荐(0)
摘要: Swift虽然是一个新出的语言,但却不提供专门的处理正则的语法和类。所以我们只能使用古老的NSRegularExpression类进行正则匹配。即先接受一个正则表达式的字符串,由此生成NSRegularExpression对象,再用该对象来匹配输入字符串,返回匹配结果。1,为便于使用,先定义一个正则... 阅读全文
posted @ 2015-09-28 11:57 brave-sailor 阅读(1758) 评论(0) 推荐(0)
摘要: 我原来写过一篇文章“Swift - 带结果列表的搜索条(UISearchDisplayController)的用法”,当时是使用UISearchDisplayController来实现带有搜索功能的列表,由于UISearchDisplayController本身就整合了搜索条和表格,所有用起来很方便... 阅读全文
posted @ 2015-09-28 11:56 brave-sailor 阅读(512) 评论(0) 推荐(0)
摘要: 使用UILocalNotification除了可以实现本地消息的推送功能(可以设置推送内容,推送时间,提示音),还可以设置应用程序右上角的提醒个数。下面演示如何设置,效果图如下:--- AppDelegate.swift ---123456789101112131415161718192021222... 阅读全文
posted @ 2015-09-28 11:23 brave-sailor 阅读(343) 评论(0) 推荐(0)
摘要: 项目创建后,AppDelegate类中默认带有如下几个方法,具体功能如下:1,应用程序第一次运行时执行这个方法只有在App第一次运行的时候被执行过一次,每次App从后台激活时都不会再执行该方法。(注:所有一般我们都在这里获取用户许可,比如本地消息推送的许可等)1234func application... 阅读全文
posted @ 2015-09-28 11:22 brave-sailor 阅读(767) 评论(0) 推荐(0)
摘要: 在Xcode中我们可以很方便的将APP适配各种本地化语言。苹果的框架已经帮我们把不同语言的数据分离开,包括图片,声音,视频,文档,用户界面文字(甚至代码中编写的用户界面文字),它们会被建立在同一个bundle中,便于我们管理。下面分别介绍字符串,图片,应用程序名是如何实现多语言本地化,以及如何切换语... 阅读全文
posted @ 2015-09-28 11:21 brave-sailor 阅读(1019) 评论(0) 推荐(0)
摘要: 要实现打电话功能,最简单最直接的方式便是:直接跳到拨号界面 (注意:这个需要真机调试,模拟器无效果)12//自动打开拨号页面并自动拨打电话UIApplication.sharedApplication().openURL(NSURL(string :"tel://123456")!) 阅读全文
posted @ 2015-09-28 11:20 brave-sailor 阅读(815) 评论(0) 推荐(0)
摘要: 使用MessageUI.framework框架可以实现短信发送功能,步骤如下:(1)首先判断设备是否有发送短信功能(2)如果设备允许发送短信,创建一个MFMessageComposeViewController视图控制器,并对其设置短信内容和收件人号码列表。(3)短信发送后,会执行回调代理方法,可以... 阅读全文
posted @ 2015-09-28 11:19 brave-sailor 阅读(865) 评论(0) 推荐(0)